[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: folder checking is not working.



Herbert J. Skuhra wrote:
>On Mon, 12 Jul 2010 10:05 -0400, "Per B. Sederberg"
><psederberg@gmail.com> wrote:
>>
>> In any case, this notification used to work and now it does not
>> indicate new mail, even when I check in manually via the letter icon
>> in my modeline.

>I use WL with three IMAP servers: Gmail, Fastmail and work account.
>The latter is running Exchange 2010 and only when I receive new e-mails
>on this
>account the letter.xpm appears in the modeline. On the other accounts
>only the
>counter is updated.

>Gmail: Inbox:(0/0/672) => Inbox:(0/1/672)
>Fastmail: Inbox:(0/0/338) => Inbox:(0/1/339)
>Exchange 2010: Inbox:(0/0/2160) => Inbox:(1/1/2161)

>No idea how to fix this.

Interesting.  I can reproduce this behavior and conclude that this
caused by the outstanding bug:

,----
| * IMAP STATUS command MUST NOT be used as a "check for new messages in the
|   selected mailbox" operation (RFC3501)
`----

Rationale: If there is just one mailbox in `wl-biff-check-folder-list',
WL uses the method `elmo-folder-diff-async' to obtain information
about new messages in the mailbox.  This method does /not/ select the
mailbox in question and performs a STATUS command to obtain
information about the mailbox size.

If there are more than one mailboxes in `wl-biff-check-folder-list',
WL uses method `elmo-folder-diff' that ends up calling
`elmo-imap4-folder-diff-plugged'.  Somewhere between the call of the
luna method (`elmo-folder-diff') and IMAP4 folder-diff-plugged the
mailbox in question gets selected.  Now WL calls STATUS on this
mailbox (what is explictly "verboten" in the specs) and the server
does /not/ return the actual mailbox size.

Test case: I've sent a message via Google's web interface to my main
mailbox while having both, gmail and the main inbox in
`wl-biff-folder-check-list'.  After some minutes I logged into the
main account's IMAP server manually and checked Inbox:

,----
|   ,* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE AUTH=PLAIN ACL ACL2=UNION] Courier-IMAP ready. Copyright 1998-2008 Double Precision, Inc.  See COPYING for distribution information.
|   0x0 LOGIN XXXX "XXXXX"
|   0x0 OK LOGIN Ok.
|   0x1 STATUS Inbox
|   0x1 NO Error in IMAP command received by server.
|   0x2 STATUS Inbox (recent)
|   ,* STATUS "Inbox" (RECENT 1)
|   0x2 OK STATUS Completed.
|   0x3 LOGOUT
|   ,* BYE Courier-IMAP server shutting down
|   0x3 OK LOGOUT completed
|   - Peer has closed the GNUTLS connection
`----

Okay, 1 RECENT message.  But for `wl-biff-check-folders' which calls
STATUS on the selected mailbox I got:

,----
| [09:10:00] <- elmo-imap46 status Inbox (recent unseen messages uidnext)
| [09:10:00] -> * STATUS "Inbox" (MESSAGES 6811 RECENT 0 UIDNEXT 8455 UNSEEN 10)
| [09:10:00] -> elmo-imap46 OK STATUS Completed.
| *elmo-imap46* OK arrived
| [09:10:00] => ((ok nil) (status ((unseen 10) (uidnext 8455) (recent 0) (messages 6811))))
`----

So biff didn't report the message because the server didn't report new
messages.  And indeed: If I run a version of WL that claims this bug
(calling STATUS on selected mailbox) to be fixed[1] the same test case
succeeds:

,----
| [16:38:45] <- elmo-imap47 noop
| [16:38:45] -> * 6833 EXISTS
| [16:38:45] -> * 1 RECENT
| [16:38:45] -> elmo-imap47 OK NOOP completed
| *elmo-imap47* OK arrived
| [16:38:45] => ((ok nil) (recent 1) (exists 6833))
| [16:38:45] -> mailbox size adjusted: Inbox, (6833 . 1)
`----

So there's a good chance this one will be fixed if I am not entirely
mistaken with my analysis.

HTH,
  -- David

[1] CVS branch elmo-imap4-compliance, or for Git users
git://repo.or.cz/wanderlust.git
--
OpenPGP... 0x99ADB83B5A4478E6
Jabber.... dmjena@jabber.org
Email..... dmaus@ictsoc.de

Attachment: pgpB5ffPxzQ42.pgp
Description: PGP signature