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

Re: What does “remove” mean?



David Abrahams wrote:

>> >Especially, what does it mean in the case where the pattern matches
>> >"^-", i.e., an NNTP folder.  
>> 
>> The original message will be deleted, so for nntp it is putting the
>> message in the killfile:
>> 
>> ,----
>> | (luna-define-method elmo-folder-delete-messages ((folder elmo-nntp-folder)
>> | 						 numbers)
>> |   (elmo-folder-kill-messages folder numbers)
>> |   t)
>> `----

>Hmm, I notice that the concept of “killed” messages isn't documented
>anywhere.  Dispose functionality aside, does WL support a killfile for
>all kinds of folders, or just for NNTP?

For all kinds of folders (grep "killed" elmo/*el).

>> You might refer to the /process/ of deleting messages that invokes
>> flagging them with a special flag \Deleted.

>Your use of “process” and “invoke” in the sentence above don't make
>any sense to me, leaving me a bit confused.

In IMAP messages are deleted in two steps: 1. Mark them
\Deleted, 2. Remove them from the mailbox (delete-expunge model).

>> Messages that are flagged this way are always
>> expunged:
>> 
>>  - directly on the EXPUNGE command
>> 
>>  - indirectly by a CLOSE command on a mailbox opened read/write

>I don't see how that can be true...  unless read/write refers
>*only* to the ability to remove messages from the mailbox, and is
>totally independent of the ability to add messages and set flags.

No, read/write means... read/write.

RFC 3501:

,----
| 6.4.2.  CLOSE Command
| 
|    Arguments:  none
| 
|    Responses:  no specific responses for this command
| 
|    Result:     OK - close completed, now in authenticated state
|                BAD - command unknown or arguments invalid
| 
|       The CLOSE command permanently removes all messages that have the
|       \Deleted flag set from the currently selected mailbox, and returns
|       to the authenticated state from the selected state.  No untagged
|       EXPUNGE responses are sent.
| 
|       No messages are removed, and no error is given, if the mailbox is
|       selected by an EXAMINE command or is otherwise selected read-only.
| 
|       Even if a mailbox is selected, a SELECT, EXAMINE, or LOGOUT
|       command MAY be issued without previously issuing a CLOSE command.
|       The SELECT, EXAMINE, and LOGOUT commands implicitly close the
|       currently selected mailbox without doing an expunge.  However,
|       when many messages are deleted, a CLOSE-LOGOUT or CLOSE-SELECT
|       sequence is considerably faster than an EXPUNGE-LOGOUT or
|       EXPUNGE-SELECT because no untagged EXPUNGE responses (which the
|       client would probably ignore) are sent.
| 
|    Example:    C: A341 CLOSE
|                S: A341 OK CLOSE completed
`----

This problem is also discussed in RFC4549, 4.2.4.  
  I
>have used IMAP clients that will give me a choice of whether to simply
>mark messages as \Deleted or actually expunge the messages when I
>delete them in the client.  I could move new messages into those
>folders and set flags without causing an EXPUNGE.

It is possible to deselect a mailbox without a CLOSE and its
consequences: E.g. select the current mailbox read-only (EXAMIME) and
then call CLOSE, SELECT another mailbox, or use the UNSELECT
extension (if available).

HTH,
  -- David
-- 
OpenPGP... 0x99ADB83B5A4478E6
Jabber.... dmjena@jabber.org
Email..... dmaus@ictsoc.de

Attachment: pgpEtPTeSpQNG.pgp
Description: PGP signature