draft-ietf-jmap-mdn-07.txt | draft-ietf-jmap-mdn-08.txt | |||
---|---|---|---|---|
JMAP R. Ouazana, Ed. | JMAP R. Ouazana, Ed. | |||
Internet-Draft Linagora | Internet-Draft Linagora | |||
Intended status: Standards Track March 18, 2020 | Intended status: Standards Track March 19, 2020 | |||
Expires: September 19, 2020 | Expires: September 20, 2020 | |||
Handling Message Disposition Notification with JMAP | Handling Message Disposition Notification with JMAP | |||
draft-ietf-jmap-mdn-07 | draft-ietf-jmap-mdn-08 | |||
Abstract | Abstract | |||
This document specifies a data model for handling [RFC8098] MDN | This document specifies a data model for handling [RFC8098] MDN | |||
messages with a server using JMAP. | messages with a server using JMAP. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
skipping to change at page 1, line 31 ¶ | skipping to change at page 1, line 31 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on September 19, 2020. | This Internet-Draft will expire on September 20, 2020. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 16 ¶ | skipping to change at page 2, line 16 ¶ | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1. Notational conventions . . . . . . . . . . . . . . . . . 3 | 1.1. Notational conventions . . . . . . . . . . . . . . . . . 3 | |||
1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.3. Addition to the capabilities object . . . . . . . . . . . 3 | 1.3. Addition to the capabilities object . . . . . . . . . . . 3 | |||
2. MDN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. MDN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2.1. MDN/send . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.1. MDN/send . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
2.2. MDN/parse . . . . . . . . . . . . . . . . . . . . . . . . 6 | 2.2. MDN/parse . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
3. Samples . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3. Samples . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.1. Sending an MDN for a received email . . . . . . . . . . . 7 | 3.1. Sending an MDN for a received email . . . . . . . . . . . 7 | |||
3.2. Asking for MDN when sending an email . . . . . . . . . . 8 | 3.2. Asking for MDN when sending an email . . . . . . . . . . 9 | |||
3.3. Parsing a received MDN . . . . . . . . . . . . . . . . . 9 | 3.3. Parsing a received MDN . . . . . . . . . . . . . . . . . 9 | |||
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | |||
4.1. JMAP Capability Registration for "mdn" . . . . . . . . . 10 | 4.1. JMAP Capability Registration for "mdn" . . . . . . . . . 11 | |||
4.2. JMAP Error Codes Registry . . . . . . . . . . . . . . . . 11 | 4.2. JMAP Error Codes Registry . . . . . . . . . . . . . . . . 11 | |||
4.2.1. mdnAlreadySent . . . . . . . . . . . . . . . . . . . 11 | 4.2.1. mdnAlreadySent . . . . . . . . . . . . . . . . . . . 11 | |||
5. Security considerations . . . . . . . . . . . . . . . . . . . 11 | 5. Security considerations . . . . . . . . . . . . . . . . . . . 11 | |||
6. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
6.1. Normative References . . . . . . . . . . . . . . . . . . 11 | 6.1. Normative References . . . . . . . . . . . . . . . . . . 11 | |||
6.2. Informative References . . . . . . . . . . . . . . . . . 12 | 6.2. Informative References . . . . . . . . . . . . . . . . . 12 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 12 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
1. Introduction | 1. Introduction | |||
skipping to change at page 5, line 19 ¶ | skipping to change at page 5, line 19 ¶ | |||
"deleted" / "dispatched" / "displayed" / "processed" | "deleted" / "dispatched" / "displayed" / "processed" | |||
See [RFC8098] for the exact meaning of these different fields. | See [RFC8098] for the exact meaning of these different fields. | |||
2.1. MDN/send | 2.1. MDN/send | |||
The MDN/send method sends an [RFC5322] message from an MDN object. | The MDN/send method sends an [RFC5322] message from an MDN object. | |||
When calling this method the "using" property of the Request object | When calling this method the "using" property of the Request object | |||
MUST contain the capabilities "urn:ietf:params:jmap:mdn" and | MUST contain the capabilities "urn:ietf:params:jmap:mdn" and | |||
"urn:ietf:params:jmap:mail". The latter because of the implicit call | "urn:ietf:params:jmap:mail". The latter because of the implicit call | |||
to Email/set, described below. The method takes the following | to Email/set and the use of Identities, described below. The method | |||
arguments: | takes the following arguments: | |||
o accountId: "Id" The id of the account to use. | o accountId: "Id" The id of the account to use. | |||
o identity: "Id" The id of the Identity to associate with these MDN. | ||||
The server will use this identity to define the sender of the MDN | ||||
and to set the finalRecipient field. | ||||
o send: "Id[MDN]" A map of creation id (client specified) to MDN | o send: "Id[MDN]" A map of creation id (client specified) to MDN | |||
objects. | objects. | |||
The response has the following arguments: | The response has the following arguments: | |||
o accountId: "Id" The id of the account used for the call. | o accountId: "Id" The id of the account used for the call. | |||
o sent: "Id[MDN]|null" A map of creation id to MDN containing any | o sent: "Id[MDN]|null" A map of creation id to MDN containing any | |||
properties that were not set by the client. This includes any | properties that were not set by the client. This includes any | |||
properties that were omitted by the client and thus set to a | properties that were omitted by the client and thus set to a | |||
skipping to change at page 6, line 19 ¶ | skipping to change at page 6, line 22 ¶ | |||
o tooLarge: MDN/send would result in an MDN that exceeds a server- | o tooLarge: MDN/send would result in an MDN that exceeds a server- | |||
defined limit for the maximum size of an MDN, or more generally on | defined limit for the maximum size of an MDN, or more generally on | |||
emails. | emails. | |||
o rateLimit: Too many MDN or emails have been created recently, and | o rateLimit: Too many MDN or emails have been created recently, and | |||
a server-defined rate limit has been reached. It may work if | a server-defined rate limit has been reached. It may work if | |||
tried again later. | tried again later. | |||
o invalidProperties: The record given is invalid in some way. | o invalidProperties: The record given is invalid in some way. | |||
If the Account Id or Identity id given cannot be found, the MDN | ||||
sending is rejected with an "invalidProperties" error. | ||||
The client SHOULD NOT issue an MDN/send request if the message has | The client SHOULD NOT issue an MDN/send request if the message has | |||
the "$mdnsent" keyword set. | the "$mdnsent" keyword set. | |||
When sending the MDN, the server is in charge of generating the | When sending the MDN, the server is in charge of generating the | |||
"originalRecipient", "finalRecipient" and "originalMessageId" fields | "originalRecipient", "finalRecipient" and "originalMessageId" fields | |||
accordingly to the [RFC8098] specification. | accordingly to the [RFC8098] specification. | |||
After all items in the "MDN/send" invocation have been processed, a | After all items in the "MDN/send" invocation have been processed, a | |||
single implicit "Email/set" call MUST be made to set the "$mdnsent" | single implicit "Email/set" call MUST be made to set the "$mdnsent" | |||
keyword on "Email" objects referenced by "MDN" objects that have been | keyword on "Email" objects referenced by "MDN" objects that have been | |||
skipping to change at page 7, line 14 ¶ | skipping to change at page 7, line 20 ¶ | |||
o parsed: "Id[MDN]|null" A map of blob id to parsed MDN | o parsed: "Id[MDN]|null" A map of blob id to parsed MDN | |||
representation for each successfully parsed blob, or null if none. | representation for each successfully parsed blob, or null if none. | |||
o notParsable: "Id[]|null" A list of ids given that corresponded to | o notParsable: "Id[]|null" A list of ids given that corresponded to | |||
blobs that could not be parsed as MDNs, or null if none. | blobs that could not be parsed as MDNs, or null if none. | |||
o notFound: "Id[]|null" A list of blob ids given that could not be | o notFound: "Id[]|null" A list of blob ids given that could not be | |||
found, or null if none. | found, or null if none. | |||
The following additional error may be returned instead of the MDN/ | The following additional errors may be returned instead of the MDN/ | |||
parse response: | parse response: | |||
o requestTooLarge: The number of ids requested by the client exceeds | o requestTooLarge: The number of ids requested by the client exceeds | |||
the maximum number the server is willing to process in a single | the maximum number the server is willing to process in a single | |||
method call. | method call. | |||
o invalidProperties: If the Account Id given cannot be found, the | ||||
MDN parsing is rejected with an "invalidProperties" error. | ||||
3. Samples | 3. Samples | |||
3.1. Sending an MDN for a received email | 3.1. Sending an MDN for a received email | |||
A client can use the following request to send an MDN back to the | A client can use the following request to send an MDN back to the | |||
sender: | sender: | |||
[[ "MDN/send", { | [[ "MDN/send", { | |||
"accountId": "ue150411c", | "accountId": "ue150411c", | |||
"send": { | "send": { | |||
End of changes. 10 change blocks. | ||||
9 lines changed or deleted | 19 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |