2012年7月13日

Re: Drafts not being cleaned up

At Thu, 12 Jul 2012 23:48:44 +0200,
Sebastian Hofer wrote:
>
> On Fri, Jul 6, 2012 at 6:28 AM, David Maus <dmaus@xxxxx> wrote:
>
> > At Thu, 21 Jun 2012 19:55:36 +0100,
> > Simon Brown wrote:
> > >

> > > At Thu, 21 Jun 2012 16:49:10 +0100,
> > > Simon Brown wrote:
> > > > Something has changed with my WL installation and now after sending an
> > > > email, the autosaved drafts are no longer cleaned up. Has something
> > > > changed in WL, or have I broken my setup? I use WL from el-get.
> > >
> > > Just noticed that I'm getting errors from gnutls about short
> > > packets. The corporate mail server has changed to exchange 2010 and is
> > > forcing TLS. This may well be the issue. Perhaps, although the message
> > > is successfully sent, due to the TLS error clean up is not carried out
> > > due to the perceived failure.
> >
> > Is it just the last draft of a message that is not deleted or are
> > there other older autosaves?
>
>
> I also experience the same problem. For me it seems that the older
> autosaves don't get cleaned up but the last version does. So I end up with
> a bunch of empty messages in my Drafts folder. Very annoying. Any ideas?

Not removing old autosaves can be a side-effect of WLs draft-save
mechanism possibly in combination with the outstanding bug:

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

What happens is roughly the following:

1. WL SELECTs (`opens') the draft folder mailbox.

2. To autosave a draft WL calls STATUS on the folder mailbox to obtain
its UIDNEXT value.

3. WL treats the obtained UIDNEXT as the UID of the draft message.

4. WL APPENDs the draft message to the mailbox.

5. The next autosave DELETEs the previous autosave by referencing its
UID obtained in step 2.

The problematic parts are in step 2 and 3:

- calling STATUS on a SELECTed mailbox is verboten by the specs (MUST
NOT); the mail server implementations I'm used to use (Dovecot,
Courier, Google, Kerio) do not report an error on such an action
but e.g. Courier does not report an updated mailbox status for the
mailbox in question.

In the case of Courier this means that the UIDNEXT value is not
updated and WL loses track of all except the first draft autosave.

- strictly speeking UIDNEXT does not return the UID of the next
message in the mailbox but an UID that is lesser or equal to the
UID of the next new message (Cf. 1st note in RFC3501, 2.3.1.1.).

Obviously the right behaviour would be to first APPEND the message and
then obtain its UID by either utilizing the UIDPLUS extension
(RFC4315) if available or search for the appended message
(Cf. RFC4549). There still is the chance that old drafts pile up if
the SEARCH for the appended message is not successful or conclusive
but I would argue that this is acceptable because we did all we could
do to find the autosaved message.

In order to see what is going wrong in your particular case you could
turn on IMAP4 debugging by setting the variable `elmo-imap4-debug' to
a non-nil value and look at the APPEND/DELETE sequences in the IMAP4
debug buffer.

Good news is that there is the branch `heimkehr' in
<git://github.com/dmj/wanderlust.git> where I combined two major
improvements to WL that sadly received no feedback yet:

1. egh's improved IMAP search
(elmo-imap4-new-search in official repo)
2. my fix for the outstanding bug w/ STATUS on SELECTed mailbox
(elmo-imap4-compliance in official repo)

The 2nd fix for STATUS on SELECTed also contains an implementation of
the proper draft save mechanism outlined above.

Please note that I recommend to use `heimkehr' rather than
`elmo-imap4-compliance' in official repo because the notion of an
`official repo' got somewhat fuzzy after the CVS was shut down and I
made some bugfixes to the compliance part directly in `heimkehr'.

In order to use or try out `heimkehr' you would need to:

- git clone git://github.com/dmj/wanderlust.git /path/to/some/directory
- cd /path/to/some/directory
- git checkout heimkehr

and prepend the subdirectories `wl', `elmo', and `utils' to your load path.

There is no need to byte-compile WL on the `heimkehr' branch.

I am running this branch for ~4 months w/o any problems against
Courier, Kerio, GoogleMail and Dovecot.

Best,
-- David
--
OpenPGP... 0x99ADB83B5A4478E6
Jabber.... dmjena@xxxxx
Email..... dmaus@xxxxx
--pgp-sign-Multipart_Fri_Jul_13_07:04:26_2012-1
Content-Type: application/pgp-signature
Content-Transfer-Encoding: 7bit
Content-Description: OpenPGP Digital Signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iF4EABEIAAYFAk//rFoACgkQDMLgk1Evc4UbhgEAgeDU+/EdjefFZb7WPIwdMSjl
a7CIrIZpgMCl94kQk0AA/1kg1eHlDS/YBXalCb4VmeQX3bs9AHEIC8yoZOZCkry2
=+Qfb
-----END PGP SIGNATURE-----

--pgp-sign-Multipart_Fri_Jul_13_07:04:26_2012-1--


投稿者 xml-rpc : 2012年7月13日 14:04
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/110200
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。