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