rfc9671.original.xml | rfc9671.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | <?xml version="1.0" encoding="utf-8"?> | |||
<!DOCTYPE rfc [ | <!DOCTYPE rfc [ | |||
<!ENTITY nbsp " "> | <!ENTITY nbsp " "> | |||
<!ENTITY zwsp "​"> | <!ENTITY zwsp "​"> | |||
<!ENTITY nbhy "‑"> | <!ENTITY nbhy "‑"> | |||
<!ENTITY wj "⁠"> | <!ENTITY wj "⁠"> | |||
]> | ]> | |||
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
<?rfc toc="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" consensus="true" | |||
<?rfc symrefs="yes"?> | ipr="trust200902" docName="draft-ietf-extra-processimip-09" number="9671" obsole | |||
<?rfc sortrefs="yes"?> | tes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" symRefs= | |||
<?rfc compact="yes"?> | "true" sortRefs="true" version="3"> | |||
<?rfc strict="yes"?> | ||||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" | ||||
category="std" consensus="yes" ipr="trust200902" | ||||
docName="draft-ietf-extra-processimip-09" | ||||
obsoletes="" updates="" submissionType="IETF" xml:lang="en" | ||||
tocInclude="true" symRefs="true" sortRefs="true" version="3"> | ||||
<!-- xml2rfc v2v3 conversion 3.12.2 --> | ||||
<front> | <front> | |||
<title abbrev="Sieve Process iMIP">Sieve Email Filtering: | <title abbrev="Sieve Extension for Processing Calendar Attachments">Sieve Em | |||
Extension for Processing Calendar Attachments</title> | ail Filtering: Extension for Processing Calendar Attachments</title> | |||
<seriesInfo name="Internet-Draft" value="draft-ietf-extra-processimip-09"/> | ||||
<seriesInfo name="RFC" value="9671"/> | ||||
<author initials="K." surname="Murchison" fullname="Kenneth Murchison"> | <author initials="K." surname="Murchison" fullname="Kenneth Murchison"> | |||
<organization abbrev="Fastmail">Fastmail US LLC</organization> | <organization abbrev="Fastmail">Fastmail US LLC</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>1429 Walnut Street - Suite 1201</street> | <street>1429 Walnut Street, Suite 1201</street> | |||
<city>Philadelphia</city> | <city>Philadelphia</city> | |||
<region>PA</region> | <region>PA</region> | |||
<code>19102</code> | <code>19102</code> | |||
<country>USA</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<email>murch@fastmailteam.com</email> | <email>murch@fastmailteam.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author initials="R." surname="Signes" fullname="Ricardo Signes"> | <author initials="R." surname="Signes" fullname="Ricardo Signes"> | |||
<organization abbrev="Fastmail">Fastmail US LLC</organization> | <organization abbrev="Fastmail">Fastmail US LLC</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>1429 Walnut Street - Suite 1201</street> | <street>1429 Walnut Street, Suite 1201</street> | |||
<city>Philadelphia</city> | <city>Philadelphia</city> | |||
<region>PA</region> | <region>PA</region> | |||
<code>19102</code> | <code>19102</code> | |||
<country>USA</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<email>rjbs@fastmailteam.com</email> | <email>rjbs@fastmailteam.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author initials="M." surname="Horsfall" fullname="Matthew Horsfall"> | <author initials="M." surname="Horsfall" fullname="Matthew Horsfall"> | |||
<organization abbrev="Fastmail">Fastmail US LLC</organization> | <organization abbrev="Fastmail">Fastmail US LLC</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>1429 Walnut Street - Suite 1201</street> | <street>1429 Walnut Street, Suite 1201</street> | |||
<city>Philadelphia</city> | <city>Philadelphia</city> | |||
<region>PA</region> | <region>PA</region> | |||
<code>19102</code> | <code>19102</code> | |||
<country>USA</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<email>alh@fastmailteam.com</email> | <email>alh@fastmailteam.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date/> | <date month="October" year="2024"/> | |||
<area>ART</area> | <area>ART</area> | |||
<!-- <workgroup>EXTRA</workgroup>--> | <workgroup>extra</workgroup> | |||
<keyword>Sieve</keyword> | <keyword>Sieve</keyword> | |||
<abstract> | <abstract> | |||
<t>This document describes the "processcalendar" extension to the | <t>This document describes the "processcalendar" extension to the | |||
Sieve email filtering language. | Sieve email filtering language. | |||
The "processcalendar" extension gives Sieve the ability to process | The "processcalendar" extension gives Sieve the ability to process | |||
machine-readable calendar data that is encapsulated in an | machine-readable calendar data that is encapsulated in an | |||
email message using Multipurpose Internet Mail Extensions (MIME).</t> | email message using Multipurpose Internet Mail Extensions (MIME).</t> | |||
</abstract> | </abstract> | |||
<!-- | ||||
<note title="Open Issues"> | ||||
<ul> | ||||
</ul> | ||||
</note> | ||||
</front> | </front> | |||
<middle> | <middle> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Introduction</name> | <name>Introduction</name> | |||
<t>Users frequently receive invites, replies, and cancellations | <t>Users frequently receive invites, replies, and cancellations | |||
for events, tasks, etc. via Internet mail messages. | for events, tasks, etc. via Internet mail messages. | |||
It is sometimes desirable to have such messages automatically | It is sometimes desirable to have such messages automatically | |||
parsed and the enclosed calendar data | parsed and the enclosed calendar data | |||
added to, updated on, or deleted from the user's calendars.</t> | added to, updated on, or deleted from the user's calendars.</t> | |||
<t>Typically such messages are based on the | <t>Typically, such messages are based on the | |||
<xref target="RFC6047" format="default">iCalendar Message-Based | iCalendar Message-Based | |||
Interoperability Protocol (iMIP)</xref>. | Interoperability Protocol (iMIP) <xref target="RFC6047" format="default">< | |||
/xref>. | ||||
However, sometimes the enclosed | However, sometimes the enclosed | |||
<xref target="RFC5545">iCalendar</xref> data does not include an | iCalendar <xref target="RFC5545"></xref> data does not include an | |||
iTIP method property | iCalendar Transport-Independent Interoperability Protocol (iTIP) method pr | |||
operty | ||||
(see <xref target="RFC5546" section="1.4" sectionFormat="comma"/>), | (see <xref target="RFC5546" section="1.4" sectionFormat="comma"/>), | |||
or the enclosed data may be in some other machine-readable format | or the enclosed data may be in some other machine-readable format | |||
<!-- (E.g. <xref target="I-D.ietf-calext-jscalendarbis">--> | (e.g., | |||
(E.g. <xref target="RFC8984"> | JSCalendar <xref target="RFC8984"></xref>). | |||
JSCalendar</xref>). | ||||
</t> | </t> | |||
<t>This document defines an extension to the | <t>This document defines an extension to the | |||
<xref target="RFC5228" format="default">Sieve language</xref> | Sieve language <xref target="RFC5228" format="default"></xref> | |||
that enables scripts to process machine-readable calendar data | that enables scripts to process machine-readable calendar data | |||
that is encapsulated in an email message using | that is encapsulated in an email message using | |||
<xref target="RFC2045">MIME</xref>. | MIME <xref target="RFC2045"></xref>. | |||
Specifically, this extension provides the ability to alter | Specifically, this extension provides the ability to alter | |||
items on a user's calendars referenced in the encapsulated | items on a user's calendars that are referenced in the encapsulated | |||
calendar data.</t> | calendar data.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Conventions Used in This Document</name> | <name>Conventions Used in This Document</name> | |||
<t>Conventions for notations are as in | <t>Conventions for notations are as in | |||
<xref target="RFC5228" section="1.1" format="default"/>, | <xref target="RFC5228" section="1.1" format="default"/>, | |||
including use of the "Usage:" label for the definition of action | including use of the "Usage:" label for the definition of action | |||
and tagged arguments syntax.</t> | and tagged arguments syntax.</t> | |||
<t>This document uses terminology and concepts from | <t>This document uses terminology and concepts from | |||
<xref target="RFC5545">iCalendar</xref> and | iCalendar <xref target="RFC5545"></xref> and | |||
<xref target="RFC5546">iTIP</xref> to describe the processing of | iTIP <xref target="RFC5546"></xref> to describe the processing of | |||
calendar data, but this extension can be used with any | calendar data, but this extension can be used with any | |||
machine-readable calendar data format that can express similar | machine-readable calendar data format that can express similar | |||
concepts.</t> | concepts.</t> | |||
<t> | ||||
The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | ||||
IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | ||||
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | ||||
RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
be interpreted as | ||||
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
when, and only when, they appear in all capitals, as shown here. | ||||
</t> | ||||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | </section> | |||
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | ||||
"MAY", and "OPTIONAL" in this document are to be interpreted as | ||||
described in BCP 14 | ||||
<xref target="RFC2119" format="default"/> | ||||
<xref target="RFC8174" format="default"/> | ||||
when, and only when, they appear in all capitals, as shown | ||||
here.</t> | ||||
</section> | ||||
<section anchor="capability" numbered="true" toc="default"> | <section anchor="capability" numbered="true" toc="default"> | |||
<name>Capability Identifier</name> | <name>Capability Identifier</name> | |||
<t>Sieve interpreters that implement this extension MUST have an | <t>Sieve interpreters that implement this extension <bcp14>MUST</bcp14> ha ve an | |||
identifier of "processcalendar" for use with the capability | identifier of "processcalendar" for use with the capability | |||
mechanism.</t> | mechanism.</t> | |||
</section> | </section> | |||
<section anchor="processcalendar" numbered="true" toc="default"> | <section anchor="processcalendar" numbered="true" toc="default"> | |||
<name>Process Calendar Action</name> | <name>Process Calendar Action</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type="sieve"><![CDATA[ | |||
Usage: processcalendar [ :allowpublic ] | Usage: processcalendar [ :allowpublic ] | |||
[ :addresses <string-list> ] | [ :addresses <string-list> ] | |||
[ :updatesonly / :calendarid <string> ] | [ :updatesonly / :calendarid <string> ] | |||
[ :deletecancelled ] | [ :deletecancelled ] | |||
[ :organizers <ext-list-name: string> ] | [ :organizers <ext-list-name: string> ] | |||
[ :outcome <variablename: string> ] | [ :outcome <variablename: string> ] | |||
[ :reason <variablename: string> ] | [ :reason <variablename: string> ] | |||
]]></artwork> | ]]></sourcecode> | |||
<t>The "processcalendar" action is used to parse encapsulated | <t>The "processcalendar" action is used to parse encapsulated calendar | |||
calendar data and perform the appropriate action based on the | data and perform the appropriate action based on the content. If the | |||
content. | calendar data is malformed in any way, it <bcp14>MUST</bcp14> be ignored | |||
If the calendar data is malformed in any way, it MUST be ignored | and no action is taken. Otherwise, calendar objects may be created, | |||
and no action is taken. | updated, or deleted from a given calendar. | |||
Otherwise, based on the iTIP method | </t> | |||
(see <xref target="RFC5546" section="1.4" />) | ||||
of the message, calendar objects are created, updated, or | ||||
deleted from a given calendar.</t> | ||||
<t>This action can be used with or without the | <t>This action can be used with or without the | |||
<xref target="RFC6134">"extlists"</xref> extension. | "extlists" extension <xref target="RFC6134"></xref>. | |||
When the "extlists" extension is enabled in a script using | When the "extlists" extension is enabled in a script using | |||
<require "extlists">, the script can use the | <require "extlists">, the script can use the | |||
<xref target="organizers">:organizers</xref> argument to the | :organizers argument (<xref target="organizers"></xref>) in the | |||
"processcalendar" action as described below. | "processcalendar" action as described below. | |||
When the "extlists" extension is not enabled, the :organizers | When the "extlists" extension is not enabled, the :organizers | |||
argument MUST NOT be used and MUST cause an error | argument <bcp14>MUST NOT</bcp14> be used and <bcp14>MUST</bcp14> cause an error | |||
according to <xref target="RFC5228" />.</t> | according to <xref target="RFC5228" />.</t> | |||
<t>This action can be used with or without the | <t>This action can be used with or without the | |||
<xref target="RFC5229">"variables"</xref> extension. | "variables" extension <xref target="RFC5229"></xref>. | |||
When the "variables" extension is enabled in a script using | When the "variables" extension is enabled in a script using | |||
<require "variables">, the script can use the | <require "variables">, the script can use the | |||
<xref target="outcome">:outcome</xref> and | :outcome (<xref target="outcome"></xref>) and | |||
<xref target="reason">:reason</xref> arguments to the | :reason (<xref target="reason"></xref>) arguments in the | |||
"processcalendar" action as described below. | "processcalendar" action as described below. | |||
When the "variables" extension is not enabled, the :outcome | When the "variables" extension is not enabled, the :outcome | |||
and :reason arguments MUST NOT be used and MUST cause an error | and :reason arguments <bcp14>MUST NOT</bcp14> be used and <bcp14>MUST</bcp 14> cause an error | |||
according to <xref target="RFC5228" />.</t> | according to <xref target="RFC5228" />.</t> | |||
<t>If a mail messages contains calendar data in multiple | <t>If a mail message contains calendar data in multiple | |||
<xref target="RFC2045">MIME</xref> parts, this action MUST | MIME <xref target="RFC2045"></xref> parts, this action <bcp14>MUST</bcp14> | |||
verify that the calendar data in each part are semantically | verify that the calendar data in each part are semantically | |||
equivalent to one another. If the data is found to be | equivalent to one another. If the data is found to be | |||
semantically different, the action MUST NOT process the message. | semantically different, the action <bcp14>MUST NOT</bcp14> process the mes | |||
Otherwise, the action MUST only process one representation of | sage. | |||
Otherwise, the action <bcp14>MUST</bcp14> only process one representation | ||||
of | ||||
the data.</t> | the data.</t> | |||
<t>This action MUST NOT make any changes to the participant | <t>This action <bcp14>MUST NOT</bcp14> make any changes to the participant | |||
status of the recipient when processing the calendar data. | status of the recipient when processing the calendar data. | |||
The mechanism for a recipient to change their participant status | The mechanism for a recipient to change their participant status | |||
to an event is out of scope for this document.</t> | to an event is out of scope for this document.</t> | |||
<t>This action SHOULD remove alarms from calendar data | <t>This action <bcp14>SHOULD</bcp14> remove alarms from calendar data | |||
before applying it to a calendar. | before applying it to a calendar. | |||
Failure to do so could result in unwelcome notifications being | Failure to do so could result in unwelcome notifications being | |||
triggered for the recipient.</t> | triggered for the recipient.</t> | |||
<section anchor="allowpublic" numbered="true" toc="default"> | <section anchor="allowpublic" numbered="true" toc="default"> | |||
<name>Allow Public Argument</name> | <name>Allow Public Argument</name> | |||
<!-- | ||||
<t>The optional :allowpublic argument is used to tell the | ||||
implementation that it can process calendar data that | ||||
is not an iTIP message (it does not contain METHOD and/or | ||||
ORGANIZER properties) or the METHOD is PUBLISH.</t> | ||||
<t>The optional :allowpublic argument is used to tell the | <t>The optional :allowpublic argument is used to tell the | |||
implementation that it can process calendar data that | implementation that it can process calendar data that | |||
does not contain any ATTENDEE properties, such as | does not contain any ATTENDEE properties, such as | |||
iTIP messages where the METHOD is PUBLISH, or non-iTIP | iTIP messages where the METHOD is PUBLISH or non-iTIP | |||
messages where the calendar data does not contain METHOD and/or | messages where the calendar data does not contain METHOD and/or | |||
ORGANIZER properties.</t> | ORGANIZER properties.</t> | |||
<t>If used in conjunction with the <xref target="organizers"> | <t>If used in conjunction with the | |||
:organizers</xref> argument, the implementation MUST NOT | :organizers argument (<xref target="organizers"></xref>), the implementa | |||
tion <bcp14>MUST NOT</bcp14> | ||||
process non-iTIP messages.</t> | process non-iTIP messages.</t> | |||
<!-- | ||||
<t>The optional :allowpublic argument is used to tell the | <t>If :allowpublic is omitted, the implementation <bcp14>MUST NOT</bcp14 | |||
implementation that it can process calendar data that | > | |||
does not contain any ATTENDEE properties. | ||||
If used in conjunction with the <xref target="organizers"> | ||||
:organizers</xref> argument, the implementation MUST NOT | ||||
process calendar data unless is it is a well-formed iTIP | ||||
message, including those in which the METHOD is PUBLISH. | ||||
Otherwise, non-iTIP calendar data may be processed.</t> | ||||
<t>If :allowpublic is omitted, the implementation MUST NOT | ||||
process calendar data unless is it is a well-formed iTIP | process calendar data unless is it is a well-formed iTIP | |||
message and one of the recipient user's email addresses | message and one of the recipient user's email addresses | |||
matches the Calendar User Address | matches the Calendar User Address | |||
(see <xref target="RFC5545" section="3.3.3" format="default" />) | (see <xref target="RFC5545" section="3.3.3" format="default" />) | |||
of the intended target of the message, as determined by the | of the intended target of the message, as determined by the | |||
iTIP method (see <xref target="RFC5546" section="1.4" />) | iTIP method (see <xref target="RFC5546" section="1.4" />) | |||
of the message:</t> | of the message:</t> | |||
<ul empty="true" spacing="normal"> | <ul> | |||
<li>"REPLY": Value of the "Organizer" property | <li>"REPLY": Value of the ORGANIZER property | |||
(see <xref target="RFC5545" section="3.8.4.1" />)</li> | (see <xref target="RFC5545" section="3.8.4.3"/>)</li> | |||
<li>"REQUEST", "CANCEL", "ADD": | <li>"REQUEST", "CANCEL", "ADD": | |||
Value of one of the "Attendee" properties | Value of one of the ATTENDEE properties | |||
(see <xref target="RFC5545" section="3.8.4.3" />)</li> | (see <xref target="RFC5545" section="3.8.4.1"/>)</li> | |||
</ul> | </ul> | |||
<t>The recipient user's email address matches the Calendar User | <t>The recipient user's email address matches the Calendar User | |||
Address of the target if the Calendar User Address is in the | Address of the target if the Calendar User Address is in the | |||
form of a mailto URI and the email address matches the | form of a mailto URI and the email address matches the | |||
"addr-spec" of the URI.</t> | "addr-spec" of the URI.</t> | |||
<t>An email address is considered to belong to the recipient if | <t>An email address is considered to belong to the recipient if | |||
it is one of:</t> | it is one of the following:</t> | |||
<ol> | <ul> | |||
<li>an email address known by the implementation to be | <li>an email address known by the implementation to be | |||
associated with the recipient,</li> | associated with the recipient,</li> | |||
<li>the final envelope recipient address if it's available to | <li>the final envelope recipient address if it's available to | |||
the implementation, or</li> | the implementation, or</li> | |||
<li>an address specified by the script writer via the | <li>an address specified by the script writer via the | |||
<xref target="addresses">:addresses</xref> argument.</li> | :addresses argument (<xref target="addresses"></xref>).</li> | |||
</ol> | </ul> | |||
</section> | </section> | |||
<section anchor="addresses" numbered="true" toc="default"> | <section anchor="addresses" numbered="true" toc="default"> | |||
<name>Addresses Argument</name> | <name>Addresses Argument</name> | |||
<t>The optional :addresses argument is used to specify | <t>The optional :addresses argument is used to specify | |||
email addresses that belong to the recipient in addition to | email addresses that belong to the recipient in addition to | |||
the addresses known to the implementation.</t> | the addresses known to the implementation.</t> | |||
</section> | </section> | |||
<section anchor="updatesonly" numbered="true" toc="default"> | <section anchor="updatesonly" numbered="true" toc="default"> | |||
<name>Updates Only Argument</name> | <name>Updates Only Argument</name> | |||
<t>The optional :updatesonly argument is used to limit the | <t>The optional :updatesonly argument is used to limit the | |||
messages processed to those targeting existing calendar | messages processed to those targeting existing calendar | |||
objects only. | objects only. | |||
If the message contains a new calendar object (its | If the message contains a new calendar object (its | |||
unique identifier does | unique identifier does | |||
not exist on any of the user's calendars), the implementation | not exist on any of the user's calendars), the implementation | |||
MUST NOT add the object to a calendar.</t> | <bcp14>MUST NOT</bcp14> add the object to a calendar.</t> | |||
<t>If :updatesonly is omitted, new calendar objects may be | <t>If :updatesonly is omitted, new calendar objects may be | |||
added to one of the user's calendars.</t> | added to one of the user's calendars.</t> | |||
<t>The :updatesonly and <xref target="calendarid">:calendarid</xref> | <t>The :updatesonly and :calendarid (<xref target="calendarid"></xref>) | |||
arguments are incompatible with each other. It is an error if | arguments are incompatible with each other. It is an error if | |||
both arguments are used in the same "processcalendar" action.</t> | both arguments are used in the same "processcalendar" action.</t> | |||
</section> | </section> | |||
<section anchor="calendarid" numbered="true" toc="default"> | <section anchor="calendarid" numbered="true" toc="default"> | |||
<name>Calendar ID Argument</name> | <name>Calendar ID Argument</name> | |||
<t>The optional :calendarid argument specifies the identifier | <t>The optional :calendarid argument specifies the identifier | |||
of the calendar onto which new calendar objects should be placed.</t> | of the calendar onto which new calendar objects should be placed.</t> | |||
<t>If :calendarid is omitted, new calendar objects will be | <t>If :calendarid is omitted, new calendar objects will be | |||
placed on the user's "default" calendar as determined by the | placed on the user's "default" calendar as determined by the | |||
implementation.</t> | implementation.</t> | |||
<t>The <xref target="updatesonly">:updatesonly</xref> and :calendarid | <t>The :updatesonly (<xref target="updatesonly"></xref>) and :calendarid | |||
arguments are incompatible with each other. It is an error if | arguments are incompatible with each other. It is an error if | |||
both arguments are used in the same "processcalendar" action.</t> | both arguments are used in the same "processcalendar" action.</t> | |||
</section> | </section> | |||
<section anchor="deletecancelled" numbered="true" toc="default"> | <section anchor="deletecancelled" numbered="true" toc="default"> | |||
<name>Delete Cancelled Argument</name> | <name>Delete Cancelled Argument</name> | |||
<t>The optional :deletecancelled argument is used to tell the | <t>The optional :deletecancelled argument is used to tell the | |||
implementation that if it receives a cancellation message, | implementation that if it receives a cancellation message, | |||
it SHOULD remove the associated calendar object from the | it <bcp14>SHOULD</bcp14> remove the associated calendar object from the | |||
calendar.</t> | calendar.</t> | |||
<t>If :deletecancelled is omitted, the status of the | <t>If :deletecancelled is omitted, the status of the | |||
associated calendar object will be set to cancelled and will | associated calendar object will be set to cancelled and will | |||
remain on the calendar.</t> | remain on the calendar.</t> | |||
</section> | </section> | |||
<section anchor="organizers" numbered="true" toc="default"> | <section anchor="organizers" numbered="true" toc="default"> | |||
<name>Organizers Argument</name> | <name>Organizers Argument</name> | |||
<t>The optional :organizers argument is used to specify | <t>The optional :organizers argument is used to specify | |||
an external list of email addresses from which the | an external list of email addresses from which the | |||
recipient is willing to accept public events, invites, | recipient is willing to accept public events, invites, | |||
updates, and cancellations. | updates, and cancellations. | |||
Implementations MUST NOT process calendar data unless is it is | Implementations <bcp14>MUST NOT</bcp14> process calendar data unless is it is | |||
a well-formed iTIP message and one of the addresses in the | a well-formed iTIP message and one of the addresses in the | |||
external list matches the Calendar User Address of the | external list matches the Calendar User Address of the | |||
"Organizer" property. | ORGANIZER property. | |||
An email address in the external list matches the Calendar User | An email address in the external list matches the Calendar User | |||
Address of the "Organizer" property if it is in the form of a | Address of the ORGANIZER property if it is in the form of a | |||
mailto URI and the email address matches the "addr-spec" of | mailto URI and the email address matches the "addr-spec" of | |||
the URI.</t> | the URI.</t> | |||
<t>If :organizers is omitted, no validation of the "Organizer" | <t>If :organizers is omitted, no validation of the ORGANIZER | |||
property is performed.</t> | property is performed.</t> | |||
</section> | </section> | |||
<section anchor="outcome" numbered="true" toc="default"> | <section anchor="outcome" numbered="true" toc="default"> | |||
<name>Outcome Argument</name> | <name>Outcome Argument</name> | |||
<t>The optional :outcome argument specifies the name of a | <t>The optional :outcome argument specifies the name of a | |||
variable into which one of the following strings specifying | variable into which one of the following strings specifying | |||
the outcome of the action will be stored:</t> | the outcome of the action will be stored:</t> | |||
<ul> | <dl newline="false" spacing="normal"> | |||
<li>"no_action": No action was performed | <dt>"no_action":</dt><dd>No action was performed | |||
(E.g., the message didn't contain calendar data, or | (e.g., the message didn't contain calendar data, or | |||
the set of provided options prevented the message from being | the set of provided options prevented the message from being | |||
processed).</li> | processed).</dd> | |||
<li>"added": A new calendar object was added to a calendar</li> | <dt>"added":</dt><dd>A new calendar object was added to a calendar.</d | |||
<li>"updated": A calendar resource was updated, cancelled, or | d> | |||
removed from the calendar.</li> | <dt>"updated":</dt><dd>A calendar object was updated, cancelled, or | |||
<li>"error": The message would have been processed but | removed from the calendar.</dd> | |||
encountered an error in doing so.</li> | <dt>"error":</dt><dd>The message would have been processed but | |||
</ul> | encountered an error in doing so.</dd> | |||
</dl> | ||||
</section> | </section> | |||
<section anchor="reason" numbered="true" toc="default"> | <section anchor="reason" numbered="true" toc="default"> | |||
<name>Reason Argument</name> | <name>Reason Argument</name> | |||
<t>The optional :reason argument specifies the name of a | <t>The optional :reason argument specifies the name of a | |||
variable into which a string describing the reason for the | variable into which a string describing the reason for the | |||
outcome will be stored. | outcome will be stored. | |||
If no reason for the outcome is available, implementations | If no reason for the outcome is available, implementations | |||
MUST set the variable to the empty string.</t> | <bcp14>MUST</bcp14> set the variable to the empty string.</t> | |||
<t>For example, an outcome of "no_action" may have a reason of | <t>For example, an outcome of "no_action" may have a reason of | |||
"only processing updates" or an outcome of "error" may have a | "only processing updates", or an outcome of "error" may have a | |||
reason of "missing unique identifier".</t> | reason of "missing unique identifier".</t> | |||
</section> | </section> | |||
<section anchor="interaction" numbered="true" toc="default"> | <section anchor="interaction" numbered="true" toc="default"> | |||
<name>Interaction with Other Sieve Actions</name> | <name>Interaction with Other Sieve Actions</name> | |||
<t>The "processcalendar" action does not cancel Sieve's | <t>The "processcalendar" action does not cancel Sieve's | |||
implicit keep action.</t> | implicit keep action.</t> | |||
<t>The "processcalendar" action can only be executed once per | <t>The "processcalendar" action can only be executed once per | |||
script. | script. | |||
A script MUST fail with an appropriate error if it attempts to | A script <bcp14>MUST</bcp14> fail with an appropriate error if it attemp ts to | |||
execute two or more "processcalendar" actions.</t> | execute two or more "processcalendar" actions.</t> | |||
<t>The "processcalendar" action is incompatible with the Sieve | <t>The "processcalendar" action is incompatible with the Sieve "reject" | |||
<xref target="RFC5429" format="default"> | and "ereject" actions <xref | |||
reject and ereject</xref> actions.</t> | target="RFC5429" format="default"></xref>. | |||
</t> | ||||
</section> | </section> | |||
<section anchor="examples" numbered="true" toc="default"> | <section anchor="examples" numbered="true" toc="default"> | |||
<name>Examples</name> | <name>Examples</name> | |||
<t>The following example specifies email addresses belonging | <t>The following example specifies email addresses belonging | |||
to the user and the identifier of the calendar onto | to the user and the identifier of the calendar onto | |||
which to place new calendar objects:</t> | which to place new calendar objects:</t> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type="sieve"><![CDATA[ | |||
require [ "processcalendar" ]; | require [ "processcalendar" ]; | |||
processcalendar :addresses [ "me@example.com", "alsome@example.com" ] | processcalendar :addresses [ "me@example.com", "alsome@example.com" ] | |||
:calendarid "1ea6d86b-6c7f-48a2-bed3-2a4c40ec281a"; | :calendarid "1ea6d86b-6c7f-48a2-bed3-2a4c40ec281a"; | |||
]]></artwork> | ]]></sourcecode> | |||
<t>The following example tells the interpreter to process | <t>The following example tells the interpreter to process | |||
flight itineraries from a particular airline:</t> | flight itineraries from a particular airline:</t> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type="sieve"><![CDATA[ | |||
require [ "processcalendar" ]; | require [ "processcalendar" ]; | |||
if allof (address ["from", "sender"] "airline@example.com", | if allof (address ["from", "sender"] "airline@example.com", | |||
header :contains "subject" "itinerary") { | header :contains "subject" "itinerary") { | |||
processcalendar :allowpublic; | processcalendar :allowpublic; | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
<t>The following example adds headers to the message if | <t>The following example adds headers to the message if | |||
calendar data isn't processed :</t> | calendar data isn't processed :</t> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type="sieve"><![CDATA[ | |||
require [ "processcalendar", "variables", "editheader" ]; | require [ "processcalendar", "variables", "editheader" ]; | |||
set "processcal_outcome" "no_action"; | set "processcal_outcome" "no_action"; | |||
set "processcal_reason" ""; | set "processcal_reason" ""; | |||
processcalendar :outcome "processcal_outcome" | processcalendar :outcome "processcal_outcome" | |||
:reason "processcal_reason"; | :reason "processcal_reason"; | |||
if not string :is "${processcal_outcome}" ["added", "updated"] { | if not string :is "${processcal_outcome}" ["added", "updated"] { | |||
addheader "X-ProcessCal-Outcome" "${processcal_outcome}"; | addheader "X-ProcessCal-Outcome" "${processcal_outcome}"; | |||
addheader "X-ProcessCal-Reason" "${processcal_reason}"; | addheader "X-ProcessCal-Reason" "${processcal_reason}"; | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</section> | </section> | |||
</section> <!-- processcalendar --> | </section> | |||
<section anchor="security" numbered="true" toc="default"> | <section anchor="security" numbered="true" toc="default"> | |||
<name>Security Considerations</name> | <name>Security Considerations</name> | |||
<t>This document describes a method for altering an electronic | <t>This document describes a method for altering an electronic | |||
calendar without user interaction. As such, unless proper | calendar without user interaction. As such, unless proper | |||
precautions are undertaken, it can be used as a vector for | precautions are undertaken, it can be used as a vector for | |||
calendar abuse.</t> | calendar abuse.</t> | |||
<t>It is critical that implementations correctly implement the | <t>It is critical that implementations correctly implement the | |||
behavior and restrictions described throughout this document. | behavior and restrictions described throughout this document. | |||
Security issues associated with processing unsolicited | Security issues associated with processing unsolicited | |||
calendar data, and methods for mitigating them are discussed in | calendar data and methods for mitigating them are discussed in | |||
<xref target="CALSPAM" format="default"/>. Specifically:</t> | <xref target="CALSPAM" format="default"/>. Specifically:</t> | |||
<ul> | <ul> | |||
<li>Processcalendar MUST NOT process any calendar data | <li>The "processcalendar" extension <bcp14>MUST NOT</bcp14> process any calendar data | |||
enclosed in a message flagged as spam and/or malicious. | enclosed in a message flagged as spam and/or malicious. | |||
The <xref target="RFC5235">spamtest and virustest</xref> | The "spamtest" and "virustest" extensions <xref target="RFC5235"></xref> | |||
extensions (or the <xref target="RFC5228">header</xref> test | (or the header test <xref target="RFC5228"></xref> | |||
if messages are scanned outside of the Sieve | if messages are scanned outside of the Sieve | |||
interpreter) can be used to make processcalendar conditional | interpreter) can be used to make "processcalendar" conditional | |||
on "safe" content.</li> | on "safe" content.</li> | |||
<li>Processcalendar SHOULD NOT process calendar data | <li>The "processcalendar" extension <bcp14>SHOULD NOT</bcp14> process ca lendar data | |||
received from a potentially malicious sender. | received from a potentially malicious sender. | |||
The <xref target="RFC5228">address and envelope</xref> tests | The address and envelope tests <xref target="RFC5228"></xref> | |||
(optionally along with the <xref target="RFC6134">extlists</xref> | (optionally along with the "extlists" extension <xref target="RFC6134">< | |||
extension) can be used to create a "deny list" and make | /xref>) can be used to create a "deny list" and make | |||
processcalendar conditional on the sender not being a member | "processcalendar" conditional on the sender not being a member | |||
of that list.</li> | of that list.</li> | |||
<li>Similarly, processcalendar SHOULD only process calendar | <li>Similarly, the "processcalendar" extension <bcp14>SHOULD</bcp14> onl y process calendar | |||
data received from a known sender. | data received from a known sender. | |||
The <xref target="RFC5228">address and envelope</xref> tests | The address and envelope tests <xref target="RFC5228"></xref> | |||
(optionally along with the <xref target="RFC6134">extlists</xref> | (optionally along with the "extlists" extension <xref target="RFC6134">< | |||
extension) can be used to create an "allow list" and make | /xref>) can be used to create an "allow list" and make | |||
processcalendar conditional on the sender being a member of | "processcalendar" conditional on the sender being a member of | |||
that list.</li> | that list.</li> | |||
<li>Processcalendar SHOULD NOT process calendar data received | <li>The "processcalendar" extension <bcp14>SHOULD NOT</bcp14> process ca lendar data received | |||
from an untrustworthy sender. Trustworthiness may depend on | from an untrustworthy sender. Trustworthiness may depend on | |||
whether the message has a valid signature (see | whether the message has a valid signature (see | |||
<xref target="RFC8551"/>) and/or on whether one or more of | <xref target="RFC8551"/>) and/or on whether one or more of the following | |||
<xref target="RFC7208">Sender Policy Framework (SPF)</xref>, | passes or fails on the message: | |||
<xref target="RFC6376">DomainKeys Identified Mail (DKIM) | Sender Policy Framework (SPF) <xref target="RFC7208"></xref>, | |||
Signatures</xref>, | DomainKeys Identified Mail (DKIM) | |||
<xref target="RFC7489">Domain-based Message Authentication, | Signatures <xref target="RFC6376"></xref>, and | |||
Reporting, and Conformance (DMARC)</xref> passes or fails on | Domain-based Message Authentication, | |||
the message. | Reporting, and Conformance (DMARC) <xref target="RFC7489"></xref>. | |||
The mechanism by which a Sieve interpreter accesses the results of | The mechanism by which a Sieve interpreter accesses the results of | |||
such checks is outside the scope of this document, but if the | such checks is outside the scope of this document, but if the | |||
results are available in the message's header fields, | results are available in the message's header fields, | |||
the <xref target="RFC5228">header</xref> test can be used to make | the header test <xref target="RFC5228"></xref> can be used to make | |||
processcalendar conditional on the sender being trustworthy.</li> | "processcalendar" conditional on the sender being trustworthy.</li> | |||
</ul> | </ul> | |||
<t>Additionally, if the calendar data has embedded (a.k.a. inline) | <t>Additionally, if the calendar data has embedded (a.k.a. inline) | |||
attachments, implementations SHOULD:</t> | attachments, implementations <bcp14>SHOULD</bcp14>:</t> | |||
<ul> | <ul> | |||
<li>Decode the embedded attachment, if necessary.</li> | <li>Decode the embedded attachment, if necessary.</li> | |||
<li>Scan the (decoded) attachment for malicious content.</li> | <li>Scan the (decoded) attachment for malicious content.</li> | |||
</ul> | </ul> | |||
<t>If an attachment is found to be malicious, processcalendar | <t>If an attachment is found to be malicious, "processcalendar" | |||
MUST NOT process the calendar data.</t> | <bcp14>MUST NOT</bcp14> process the calendar data.</t> | |||
</section> | </section> | |||
<section anchor="privacy" numbered="true" toc="default"> | <section anchor="privacy" numbered="true" toc="default"> | |||
<name>Privacy Considerations</name> | <name>Privacy Considerations</name> | |||
<t>It is believed that this extension doesn't introduce any | <t>It is believed that this extension doesn't introduce any | |||
privacy considerations beyond those in | privacy considerations beyond those in | |||
<xref target="RFC5228" format="default"/>.</t> | <xref target="RFC5228" format="default"/>.</t> | |||
</section> | </section> | |||
skipping to change at line 513 ¶ | skipping to change at line 480 ¶ | |||
<section anchor="privacy" numbered="true" toc="default"> | <section anchor="privacy" numbered="true" toc="default"> | |||
<name>Privacy Considerations</name> | <name>Privacy Considerations</name> | |||
<t>It is believed that this extension doesn't introduce any | <t>It is believed that this extension doesn't introduce any | |||
privacy considerations beyond those in | privacy considerations beyond those in | |||
<xref target="RFC5228" format="default"/>.</t> | <xref target="RFC5228" format="default"/>.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Registration of Sieve Extension</name> | <name>Registration of Sieve Extension</name> | |||
<t>This document defines the following new Sieve extension | <t>This document defines the following new Sieve extension, which IANA h | |||
to be added to the registry defined in | as added to the <eref target="https://www.iana.org/assignments/sieve-extensions" | |||
Section 6.2 of <xref target="RFC5228" format="default"/> and located her | >"Sieve | |||
e: | Extensions" registry</eref>. The registry is defined in <xref target="RF | |||
<eref target="https://www.iana.org/assignments/sieve-extensions/sieve-ex | C5228" format="default" sectionFormat="of" section="6.2"/>. | |||
tensions.xhtml#sieve-extensions"/> | ||||
</t> | ||||
<t>IANA are requested to add a capability to the Sieve | ||||
Extensions registry: | ||||
</t> | </t> | |||
<ul empty="true" spacing="normal"> | ||||
<li>To: iana@iana.org</li> | <dl newline="false" spacing="normal"> | |||
<li>Subject: Registration of new Sieve extension</li> | <dt>Capability name:</dt><dd>processcalendar</dd> | |||
<li>Capability name: processcalendar</li> | <dt>Description:</dt><dd>Adds the "processcalendar" action command to | |||
<li>Description: Adds the "processcalendar" action command to | add and update items on a user's calendars.</dd> | |||
add and update items on a user's calendars.</li> | <dt>RFC number:</dt><dd>RFC 9671</dd> | |||
<li>RFC number: RFC XXXX</li> | <dt>Contact address:</dt><dd>Sieve discussion list | |||
<li>Contact address: The Sieve discussion list | <sieve@ietf.org></dd> | |||
<sieve@ietf.org></li> | </dl> | |||
</ul> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Registration of Sieve Action</name> | <name>Registration of Sieve Action</name> | |||
<t>This document defines the following new Sieve action | ||||
to be added to the registry defined in | <t>This document defines the following new Sieve action, which IANA has | |||
Section 2.1 of <xref target="RFC9122" format="default"/> and located her | added to the <eref | |||
e: | target="https://www.iana.org/assignments/sieve-extensions">"Sieve Action | |||
<eref target="https://www.iana.org/assignments/sieve-extensions/sieve-ex | s" registry | |||
tensions.xhtml#sieve-actions"/> | </eref>. The | |||
</t> | registry is defined in <xref target="RFC9122" format="default" | |||
<t>IANA are requested to add a capability to the Sieve | sectionFormat="of" section="2.1"/>. | |||
Actions registry: | ||||
</t> | </t> | |||
<ul empty="true" spacing="normal"> | ||||
<li>To: iana@iana.org</li> | ||||
<li>Subject: Registration of new Sieve action</li> | ||||
<li>Name: processcalendar</li> | ||||
<li>Description: Add and update items on a user's calendars</li> | ||||
<li>References: RFC XXXX <xref target="RFC5229"/> | ||||
<xref target="RFC6134"/></li> | ||||
<li>Capabilities: "processcalendar", "variables", "extlists"</li> | ||||
<li>Action Interactions: This action is incompatible with | ||||
"reject" and "ereject" actions</li> | ||||
<li>Cancels Implicit Keep? No</li> | ||||
<li>Can Use with IMAP Events? No</li> | ||||
</ul> | ||||
</section> | ||||
</section> <!-- IANA --> | ||||
<section numbered="true" toc="default"> | <dl newline="false" spacing="normal"> | |||
<name>Acknowledgments</name> | <dt>Name:</dt><dd>processcalendar</dd> | |||
<t>The authors would like to thank the following individuals for | <dt>Description:</dt><dd>Add and update items on a user's calendars</d | |||
contributing their ideas and support for writing this | d> | |||
specification: Ned Freed and Alexey Melnikov.</t> | <dt>References:</dt><dd>RFC 9671 <xref target="RFC5229"/> | |||
<xref target="RFC6134"/></dd> | ||||
<dt>Capabilities:</dt><dd>"processcalendar", "variables", "extlists"</ | ||||
dd> | ||||
<dt>Action Interactions:</dt><dd>This action is incompatible with the | ||||
"reject" and "ereject" actions.</dd> | ||||
<dt>Cancels Implicit Keep?</dt><dd>No</dd> | ||||
<dt>Can Use with IMAP Events?</dt><dd>No</dd> | ||||
</dl> | ||||
</section> | ||||
</section> | </section> | |||
</middle> | </middle> | |||
<back> | <back> | |||
<references> | <references> | |||
<name>References</name> | <name>References</name> | |||
<references> | <references> | |||
<name>Normative References</name> | <name>Normative References</name> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.2119.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5228.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5229.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8174.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6047.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6134.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.9122.xml"/> | ||||
<reference anchor="CALSPAM" | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
target="https://standards.calconnect.org/csd/cc-18003.html"> | 119.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | ||||
228.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | ||||
229.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.81 | ||||
74.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
047.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
134.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
122.xml"/> | ||||
<reference anchor="CALSPAM" target="https://standards.calconnect.org/csd | ||||
/cc-18003.html"> | ||||
<front> | <front> | |||
<title>Calendar operator practices - Guidelines to protect | <title>Calendar operator practices - Guidelines to protect against | |||
against calendar abuse</title> | calendar abuse</title> | |||
<author> | <author> | |||
<organization>The Calendaring and Scheduling Consortium</organizat ion> | <organization>The Calendaring and Scheduling Consortium</organizat ion> | |||
</author> | </author> | |||
<date year="2019"/> | <date year="2019"/> | |||
</front> | </front> | |||
<seriesInfo name="CC/R" value="18003"/> | <seriesInfo name="CC/R" value="18003:2019"/> | |||
</reference> | </reference> | |||
</references> | </references> | |||
<references> | <references> | |||
<name>Informative References</name> | <name>Informative References</name> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
FC.2045.xml"/> | 045.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
FC.5545.xml"/> | 545.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
FC.5235.xml"/> | 235.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
FC.5546.xml"/> | 546.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
FC.5429.xml"/> | 429.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.89 | |||
.8984.xml"/> | 84.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.85 | |||
.8551.xml"/> | 51.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.63 | |||
.6376.xml"/> | 76.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.74 | |||
.7489.xml"/> | 89.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.72 | |||
.7208.xml"/> | 08.xml"/> | |||
<!-- <xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf- | ||||
calext-jscalendarbis.xml"/>--> | ||||
</references> | </references> | |||
</references> | </references> | |||
<section | <section numbered="false" toc="default"> | |||
title="Change History (To be removed by RFC Editor before publication)"> | <name>Acknowledgments</name> | |||
<t>Changes since draft-ietf-sieve-processimip-08:</t> | <t>The authors would like to thank the following individuals for | |||
<ol> | contributing their ideas and support for writing this | |||
<li>Added a consequence of not removing alarms before applying | specification: <contact fullname="Ned Freed"/> and <contact fullname="Alex | |||
data to a calendar.</li> | ey Melnikov"/>.</t> | |||
<li>Changed iCalendar-specific "UID" to generic "unique | ||||
identifier".</li> | ||||
<li>Use a normative SHOULD for :deletecancelled argument.</li> | ||||
<li>Removed Implementation Status section.</li> | ||||
</ol> | ||||
<t>Changes since draft-ietf-sieve-processimip-07:</t> | ||||
<ol> | ||||
<li>Fixed Sieve Action registration to include all associated | ||||
capabilites and their references.</li> | ||||
</ol> | ||||
<t>Changes since draft-ietf-sieve-processimip-06:</t> | ||||
<ol> | ||||
<li>Fixed example that was still using :errstr rather than | ||||
:reason.</li> | ||||
<li>Explicitly stated that the :updateonly and :calendarid | ||||
options are incompatible with each each.</li> | ||||
<li>Explicitly stated that if :allowpublic is used with :organizers | ||||
that non-iTIP messages MUST NOT be processed.</li> | ||||
<li>Updated security considerations to use "deny list" and | ||||
"allow list", and to add a bullet discussing use of S/MIME, | ||||
SPF, DKIM, and DMARC.</li> | ||||
<li>Updated the status of the Cyrus implementation.</li> | ||||
<li>Miscellaneous editorial changes.</li> | ||||
</ol> | ||||
<t>Changes since draft-ietf-sieve-processimip-05:</t> | ||||
<ol> | ||||
<li>Renamed :errstr to :reason and added examples.</li> | ||||
<li>Miscellaneous editorial changes.</li> | ||||
</ol> | ||||
<t>Changes since draft-ietf-sieve-processimip-04:</t> | ||||
<ol> | ||||
<li>Miscellaneous editorial changes.</li> | ||||
</ol> | ||||
<t>Changes since draft-ietf-sieve-processimip-03:</t> | ||||
<ol> | ||||
<li>Added text about multiple MIME parts containing calendar data.</li> | ||||
<li>Added text about embedded attachments to Security | ||||
Considerations.</li> | ||||
<li>Added :organizers option if "extlists" is supported.</li> | ||||
<li>Miscellaneous editorial changes.</li> | ||||
</ol> | ||||
<t>Changes since draft-ietf-sieve-processimip-02:</t> | ||||
<ol> | ||||
<li>Renamed :nonitip to :allowpublic to cover both non-iTIP | ||||
and METHOD:PUBLIC messages.</li> | ||||
<li>Renamed :deletecanceled to :deletecancelled to match | ||||
RFC5545 language.</li> | ||||
<li>Specified that this action MUST NOT alter a recipient's | ||||
participation status.</li> | ||||
<li>:errstr MUST be set to the empty string if no reason for | ||||
the outcome is available.</li> | ||||
<li>Added the "Interaction with Other Sieve Actions" subsection.</li> | ||||
<li>Add Security Considerations.</li> | ||||
<li>Added action registration.</li> | ||||
<li>Added three issues for discussion.</li> | ||||
<li>Miscellaneous editorial changes.</li> | ||||
</ol> | ||||
<t>Changes since draft-ietf-sieve-processimip-01:</t> | ||||
<ol> | ||||
<li>Changed the name of the action from processimip to | ||||
processcalendar.</li> | ||||
<li>The action is now independent of iMIP and is calendar data | ||||
format agnostic.</li> | ||||
<li>Added examples.</li> | ||||
</ol> | ||||
<t>Changes since draft-ietf-sieve-processimip-00:</t> | ||||
<ol> | ||||
<li>No changes.</li> | ||||
</ol> | ||||
<t>Changes since draft-murchison-sieve-processimip-00:</t> | ||||
<ol> | ||||
<li>Document name change only.</li> | ||||
</ol> | ||||
</section> | </section> | |||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 92 change blocks. | ||||
339 lines changed or deleted | 235 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |