⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc4551.txt

📁 广泛使用的邮件服务器!同时
💻 TXT
📖 第 1 页 / 共 4 页
字号:
3.1.2.  NOMODSEQ Response Code   A server that doesn't support the persistent storage of mod-sequences   for the mailbox MUST send the OK untagged response including NOMODSEQ   response code with every successful SELECT or EXAMINE command.  A   server that returned NOMODSEQ response code for a mailbox, which   subsequently receives one of the following commands while the mailbox   is selected:      -  a FETCH command with the CHANGEDSINCE modifier,      -  a FETCH or SEARCH command that includes the MODSEQ message data         item, or      -  a STORE command with the UNCHANGEDSINCE modifier   MUST reject any such command with the tagged BAD response.   Example 2:      C: A142 SELECT INBOX      S: * 172 EXISTS      S: * 1 RECENT      S: * OK [UNSEEN 12] Message 12 is first unseen      S: * OK [UIDVALIDITY 3857529045] UIDs valid      S: * OK [UIDNEXT 4392] Predicted next UID      S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)      S: * OK [PERMANENTFLAGS (\Deleted \Seen \*)] Limited      S: * OK [NOMODSEQ] Sorry, this mailbox format doesn't support           modsequences      S: A142 OK [READ-WRITE] SELECT completed3.2.  STORE and UID STORE Commands   This document defines the following STORE modifier (see Section 2.5   of [IMAPABNF]):   UNCHANGEDSINCE <mod-sequence>      For each message specified in the message set, the server performs      the following.  If the mod-sequence of any metadata item of theMelnikov & Hole             Standards Track                     [Page 7]RFC 4551          IMAP Extension for Conditional STORE         June 2006      message is equal or less than the specified UNCHANGEDSINCE value,      then the requested operation (as described by the message data      item) is performed.  If the operation is successful, the server      MUST update the mod-sequence attribute of the message.  An      untagged FETCH response MUST be sent, even if the .SILENT suffix      is specified, and the response MUST include the MODSEQ message      data item.  This is required to update the client's cache with the      correct mod-sequence values.  See Section 3.3.2 for more details.      However, if the mod-sequence of any metadata item of the message      is greater than the specified UNCHANGEDSINCE value, then the      requested operation MUST NOT be performed.  In this case, the      mod-sequence attribute of the message is not updated, and the      message number (or unique identifier in the case of the UID STORE      command) is added to the list of messages that failed the      UNCHANGESINCE test.      When the server finished performing the operation on all the      messages in the message set, it checks for a non-empty list of      messages that failed the UNCHANGESINCE test.  If this list is      non-empty, the server MUST return in the tagged response a      MODIFIED response code.  The MODIFIED response code includes the      message set (for STORE) or set of UIDs (for UID STORE) of all      messages that failed the UNCHANGESINCE test.   Example 3:      All messages pass the UNCHANGESINCE test.      C: a103 UID STORE 6,4,8 (UNCHANGEDSINCE 12121230045)          +FLAGS.SILENT (\Deleted)      S: * 1 FETCH (UID 4 MODSEQ (12121231000))      S: * 2 FETCH (UID 6 MODSEQ (12121230852))      S: * 4 FETCH (UID 8 MODSEQ (12121130956))      S: a103 OK Conditional Store completed   Example 4:      C: a104 STORE * (UNCHANGEDSINCE 12121230045) +FLAGS.SILENT         (\Deleted $Processed)      S: * 50 FETCH (MODSEQ (12111230047))      S: a104 OK Store (conditional) completed   Example 5:      C: c101 STORE 1 (UNCHANGEDSINCE 12121230045) -FLAGS.SILENT         (\Deleted)      S: * OK [HIGHESTMODSEQ 12111230047]Melnikov & Hole             Standards Track                     [Page 8]RFC 4551          IMAP Extension for Conditional STORE         June 2006      S: * 50 FETCH (MODSEQ (12111230048))      S: c101 OK Store (conditional) completed      HIGHESTMODSEQ response code was sent by the server presumably      because this was the first CONDSTORE enabling command.   Example 6:      In spite of the failure of the conditional STORE operation for      message 7, the server continues to process the conditional STORE      in order to find all messages that fail the test.      C: d105 STORE 7,5,9 (UNCHANGEDSINCE 320162338)          +FLAGS.SILENT (\Deleted)      S: * 5 FETCH (MODSEQ (320162350))      S: d105 OK [MODIFIED 7,9] Conditional STORE failed   Example 7:      Same as above, but the server follows the SHOULD recommendation in      Section 6.4.6 of [IMAP4].      C: d105 STORE 7,5,9 (UNCHANGEDSINCE 320162338)          +FLAGS.SILENT (\Deleted)      S: * 7 FETCH (MODSEQ (320162342) FLAGS (\Seen \Deleted))      S: * 5 FETCH (MODSEQ (320162350))      S: * 9 FETCH (MODSEQ (320162349) FLAGS (\Answered))      S: d105 OK [MODIFIED 7,9] Conditional STORE failed      Use of UNCHANGEDSINCE with a modification sequence of 0 always      fails if the metadata item exists.  A system flag MUST always be      considered existent, whether it was set or not.   Example 8:      C: a102 STORE 12 (UNCHANGEDSINCE 0)          +FLAGS.SILENT ($MDNSent)      S: a102 OK [MODIFIED 12] Conditional STORE failed      The client has tested the presence of the $MDNSent user-defined      keyword.   Note: A client trying to make an atomic change to the state of a   particular metadata item (or a set of metadata items) should be   prepared to deal with the case when the server returns the MODIFIED   response code if the state of the metadata item being watched hasn't   changed (but the state of some other metadata item has).  This is   necessary, because some servers don't store separate mod-sequencesMelnikov & Hole             Standards Track                     [Page 9]RFC 4551          IMAP Extension for Conditional STORE         June 2006   for different metadata items.  However, a server implementation   SHOULD avoid generating spurious MODIFIED responses for +FLAGS/-FLAGS   STORE operations, even when the server stores a single mod-sequence   per message.  Section 5 describes how this can be achieved.   Unless the server has included an unsolicited FETCH to update   client's knowledge about messages that have failed the UNCHANGEDSINCE   test, upon receipt of the MODIFIED response code, the client SHOULD   try to figure out if the required metadata items have indeed changed   by issuing FETCH or NOOP command.  It is RECOMMENDED that the server   avoids the need for the client to do that by sending an unsolicited   FETCH response (Examples 9 and 10).   If the required metadata items haven't changed, the client SHOULD   retry the command with the new mod-sequence.  The client SHOULD allow   for a configurable but reasonable number of retries (at least 2).   Example 9:      In the example below, the server returns the MODIFIED response      code without sending information describing why the STORE      UNCHANGEDSINCE operation has failed.      C: a106 STORE 100:150 (UNCHANGEDSINCE 212030000000)          +FLAGS.SILENT ($Processed)      S: * 100 FETCH (MODSEQ (303181230852))      S: * 102 FETCH (MODSEQ (303181230852))      ...      S: * 150 FETCH (MODSEQ (303181230852))      S: a106 OK [MODIFIED 101] Conditional STORE failed      The flag $Processed was set on the message 101...      C: a107 NOOP      S: * 101 FETCH (MODSEQ (303011130956) FLAGS ($Processed))      S: a107 OK      Or the flag hasn't changed, but another has (note that this server      behaviour is discouraged.  Server implementers should also see      Section 5)...      C: b107 NOOP      S: * 101 FETCH (MODSEQ (303011130956) FLAGS (\Deleted \Answered))      S: b107 OK      ...and the client retries the operation for the message 101 with      the updated UNCHANGEDSINCE valueMelnikov & Hole             Standards Track                    [Page 10]RFC 4551          IMAP Extension for Conditional STORE         June 2006      C: b108 STORE 101 (UNCHANGEDSINCE 303011130956)          +FLAGS.SILENT ($Processed)      S: * 101 FETCH (MODSEQ (303181230852))      S: b108 OK Conditional Store completed   Example 10:      Same as above, but the server avoids the need for the client to      poll for changes.      The flag $Processed was set on the message 101 by another      client...      C: a106 STORE 100:150 (UNCHANGEDSINCE 212030000000)          +FLAGS.SILENT ($Processed)      S: * 100 FETCH (MODSEQ (303181230852))      S: * 101 FETCH (MODSEQ (303011130956) FLAGS ($Processed))      S: * 102 FETCH (MODSEQ (303181230852))      ...      S: * 150 FETCH (MODSEQ (303181230852))      S: a106 OK [MODIFIED 101] Conditional STORE failed      Or the flag hasn't changed, but another has (note that this server      behaviour is discouraged.  Server implementers should also see      Section 5)...      C: a106 STORE 100:150 (UNCHANGEDSINCE 212030000000)          +FLAGS.SILENT ($Processed)      S: * 100 FETCH (MODSEQ (303181230852))      S: * 101 FETCH (MODSEQ (303011130956) FLAGS (\Deleted \Answered))      S: * 102 FETCH (MODSEQ (303181230852))      ...      S: * 150 FETCH (MODSEQ (303181230852))      S: a106 OK [MODIFIED 101] Conditional STORE failed      ...and the client retries the operation for the message 101 with      the updated UNCHANGEDSINCE value      C: b108 STORE 101 (UNCHANGEDSINCE 303011130956)          +FLAGS.SILENT ($Processed)      S: * 101 FETCH (MODSEQ (303181230852))      S: b108 OK Conditional Store completed      Or the flag hasn't changed, but another has (nice server      behaviour.  Server implementers should also see Section 5)...      C: a106 STORE 100:150 (UNCHANGEDSINCE 212030000000)          +FLAGS.SILENT ($Processed)Melnikov & Hole             Standards Track                    [Page 11]RFC 4551          IMAP Extension for Conditional STORE         June 2006      S: * 100 FETCH (MODSEQ (303181230852))      S: * 101 FETCH (MODSEQ (303011130956) FLAGS ($Processed \Deleted           \Answered))      S: * 102 FETCH (MODSEQ (303181230852))      ...      S: * 150 FETCH (MODSEQ (303181230852))      S: a106 OK Conditional STORE completed   Example 11:      The following example is based on the example from the Section      4.2.3 of [RFC-2180] and demonstrates that the MODIFIED response      code may be also returned in the tagged NO response.      Client tries to conditionally STORE flags on a mixture of expunged      and non-expunged messages; one message fails the UNCHANGEDSINCE      test.      C: B001 STORE 1:7 (UNCHANGEDSINCE 320172338) +FLAGS (\SEEN)      S: * 1 FETCH (MODSEQ (320172342) FLAGS (\SEEN))      S: * 3 FETCH (MODSEQ (320172342) FLAGS (\SEEN))      S: B001 NO [MODIFIED 2] Some of the messages no longer exist.      C: B002 NOOP      S: * 4 EXPUNGE      S: * 4 EXPUNGE      S: * 4 EXPUNGE      S: * 4 EXPUNGE      S: * 2 FETCH (MODSEQ (320172340) FLAGS (\Deleted \Answered))      S: B002 OK NOOP Completed.      By receiving FETCH responses for messages 1 and 3, and EXPUNGE      responses that indicate that messages 4 through 7 have been      expunged, the client retries the operation only for the message 2.      The updated UNCHANGEDSINCE value is used.      C: b003 STORE 2 (UNCHANGEDSINCE 320172340) +FLAGS (\Seen)      S: * 2 FETCH (MODSEQ (320180050))      S: b003 OK Conditional Store completed   Note: If a message is specified multiple times in the message set,   and the server doesn't internally eliminate duplicates from the   message set, it MUST NOT fail the conditional STORE operation for the   second (or subsequent) occurrence of the message if the operation   completed successfully for the first occurrence.  For example, if the   client specifies:Melnikov & Hole             Standards Track                    [Page 12]RFC 4551          IMAP Extension for Conditional STORE         June 2006         e105 STORE 7,3:9 (UNCHANGEDSINCE 12121230045)          +FLAGS.SILENT (\Deleted)   the server must not fail the operation for message 7 as part of   processing "3:9" if it succeeded when message 7 was processed the   first time.   Once the client specified the UNCHANGEDSINCE modifier in a STORE   command, the server MUST include the MODSEQ fetch response data items   in all subsequent unsolicited FETCH responses.   This document also changes the behaviour of the server when it has   performed a STORE or UID STORE command and the UNCHANGEDSINCE   modifier is not specified.  If the operation is successful for a   message, the server MUST update the mod-sequence attribute of the   message.  The server is REQUIRED to include the mod-sequence value   whenever it decides to send the unsolicited FETCH response to all   CONDSTORE-aware clients that have opened the mailbox containing the   message.   Server implementers should also see Section 3.8 for additional   quality of implementation issues related to the STORE command.3.3.  FETCH and UID FETCH Commands

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -