Discussion:
[PATCH] nnimap: enable additional expunge options
Nikolaus Rath
2015-05-27 02:20:03 UTC
Permalink
Hello,

If the IMAP server supports the UID EXPUNGE command, the nnimap backend
currently always expunges deleted articles.

If the IMAP server does not support this command, articles are either
not expunged at all (nnimap-expunge is nil), or ALL articles that are
currently flagged as deleted will be expunged when any one article is
deleted in Gnus.

The attached patch introduces three new settings for nnimap-expunge:

* If nnimap-expunge is 'never, deleted articles are marked with the
IMAP \\Delete flag but not automatically expunged.

* If nnimap-expunge is 'immediately, deleted articles are immediately
expunged (this requires the server to support the UID EXPUNGE
command).

* If nnimap-expunge is 'on-exit, deleted articles are flagged, and all
flagged articles are expunged when the group is closed.

Note that none of these behaviors is available with the current settings
(nil / non-nil).

The 'on-exit setting is mostly useful as a safe-guard: as long as the
group is not closed, article deletions are reversal (either by using a
different IMAP client, or by exiting Gnus without updating the summary
buffer).

The 'never setting is not (yet) very useful because Gnus does not
distinguish between deleted articles and regular articles in the summary
buffer. However, this will be addressed by a separate patch.

I hope these patches will improve interoperability of Gnus with other
IMAP mail clients.

Thanks for considering.

Best,
-Nikolaus
--
GPG encrypted emails preferred. Key id: 0xD113FCAC3C4E599F
Fingerprint: ED31 791B 2C5C 1613 AF38 8B8A D113 FCAC 3C4E 599F

»Time flies like an arrow, fruit flies like a Banana.«
Eric Abrahamsen
2015-08-03 09:24:39 UTC
Permalink
Post by Nikolaus Rath
Hello,
If the IMAP server supports the UID EXPUNGE command, the nnimap backend
currently always expunges deleted articles.
If the IMAP server does not support this command, articles are either
not expunged at all (nnimap-expunge is nil), or ALL articles that are
currently flagged as deleted will be expunged when any one article is
deleted in Gnus.
* If nnimap-expunge is 'never, deleted articles are marked with the
IMAP \\Delete flag but not automatically expunged.
* If nnimap-expunge is 'immediately, deleted articles are immediately
expunged (this requires the server to support the UID EXPUNGE
command).
* If nnimap-expunge is 'on-exit, deleted articles are flagged, and all
flagged articles are expunged when the group is closed.
Note that none of these behaviors is available with the current settings
(nil / non-nil).
The 'on-exit setting is mostly useful as a safe-guard: as long as the
group is not closed, article deletions are reversal (either by using a
different IMAP client, or by exiting Gnus without updating the summary
buffer).
The 'never setting is not (yet) very useful because Gnus does not
distinguish between deleted articles and regular articles in the summary
buffer. However, this will be addressed by a separate patch.
Hey, I'm trying out the rest of these patches -- I set `nnimap-expunge'
to 'never on an outlook imap account, and the messages still get
(completely) deleted when I use `gnus-summary-delete-article' -- I can
see them vanishing from the webmail interface. This is a little odd
because, with this patch applied, the EXPUNGE command never seems to be
issued, yet away the messages go. Is this perhaps a quirk of outlook?
I'll try it on a local dovecot as well...

E
Nikolaus Rath
2015-08-03 17:21:14 UTC
Permalink
Post by Eric Abrahamsen
Post by Nikolaus Rath
If the IMAP server supports the UID EXPUNGE command, the nnimap backend
currently always expunges deleted articles.
If the IMAP server does not support this command, articles are either
not expunged at all (nnimap-expunge is nil), or ALL articles that are
currently flagged as deleted will be expunged when any one article is
deleted in Gnus.
* If nnimap-expunge is 'never, deleted articles are marked with the
IMAP \\Delete flag but not automatically expunged.
* If nnimap-expunge is 'immediately, deleted articles are immediately
expunged (this requires the server to support the UID EXPUNGE
command).
* If nnimap-expunge is 'on-exit, deleted articles are flagged, and all
flagged articles are expunged when the group is closed.
Note that none of these behaviors is available with the current settings
(nil / non-nil).
The 'on-exit setting is mostly useful as a safe-guard: as long as the
group is not closed, article deletions are reversal (either by using a
different IMAP client, or by exiting Gnus without updating the summary
buffer).
The 'never setting is not (yet) very useful because Gnus does not
distinguish between deleted articles and regular articles in the summary
buffer. However, this will be addressed by a separate patch.
Hey, I'm trying out the rest of these patches -- I set `nnimap-expunge'
to 'never on an outlook imap account, and the messages still get
(completely) deleted when I use `gnus-summary-delete-article' -- I can
see them vanishing from the webmail interface. This is a little odd
because, with this patch applied, the EXPUNGE command never seems to be
issued, yet away the messages go. Is this perhaps a quirk of outlook?
I'll try it on a local dovecot as well...
Some webmail interface automatically issue an EXPUNGE command when you
look at a folder. Typically the argument is that it "eliminates
potential confusion of the user".

Try looking at the mailbox with Thunderbird (it shows deleted messages
as crossed-out), or with Gnus and nnimap-hide-expunged set to false (you
can't distinguish between deleted and not-deleted in this case, but you
can confirm that the ones that you deleted are still there).


Best,
-Nikolaus
--
GPG encrypted emails preferred. Key id: 0xD113FCAC3C4E599F
Fingerprint: ED31 791B 2C5C 1613 AF38 8B8A D113 FCAC 3C4E 599F

»Time flies like an arrow, fruit flies like a Banana.«
Loading...