﻿<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc rfcedstyle="yes"?>
<?rfc subcompact="no"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" category="info"
     docName="draft-ietf-extra-sieve-action-registry-03">
  <front>
    <title abbrev="IANA registry for Sieve actions">
      IANA registry for Sieve actions
    </title>
    <author initials="A." surname="Melnikov" fullname="Alexey Melnikov">
      <organization>Isode Ltd</organization>
      <address>
	      <postal>
	        <street>14 Castle Mews</street>
	        <city>Hampton</city>
	        <region>Middlesex</region>
	        <code>TW12 2NP</code>
	        <country>UK</country>
	      </postal>
	      <email>Alexey.Melnikov@isode.com</email>
      </address>
    </author>
    <author initials="K." surname="Murchison" fullname="Kenneth Murchison">
      <organization abbrev="Fastmail">Fastmail US LLC</organization>
      <address>
        <postal>
          <street>1429 Walnut Street - Suite 1201</street>
          <city>Philadelphia</city>
          <region>PA</region>
          <code>19102</code>
          <country>USA</country>
        </postal>
        <email>murch@fastmailteam.com</email>
      </address>
    </author>

    <date year="2022" />
    
    <keyword>Sieve</keyword>

    <abstract>
      <t>
      This document creates a registry of Sieve (RFC 5228) actions in order to help developers and
      Sieve extension writers track interactions between different extensions.
      </t>
    </abstract>
    
  </front>
  <middle>
      
    <section title="Introduction">

      <t>
      Sieve Email Filtering Language <xref target="RFC5228"/> is a popular email filtering language
      used upon final mail delivery. Popularity of Sieve resulted in a myriad of Sieve extensions
      that can interact with each other in wonderful and complex ways.
      There is currently no easy way to find out all actions defined by Sieve extensions published
      in RFCs, which make it quite difficult for Sieve extension writers and Sieve implementation
      developers to forsee interactions between Sieve actions.
      </t>

      <t>
      This document creates a registry of Sieve <xref target="RFC5228"/> actions in order to help developers and
      Sieve extension writers track interactions between different extensions.
      </t>
      
    </section>

    <section title="IANA Considerations">

      <section title="Sieve Actions Registration Template and Procedure">
      <t>
      IANA is requested to create a new registry for Sieve actions (see Section 2.9 of <xref target="RFC5228"/>
      for details on Sieve actions). Registration of both actions specified in IETF Stream RFCs
      and vendor specific actions is allowed and encouraged.
      The registration template contains:

      <list style="numbers">
        <t>name of the action;</t>
        <t>short description;</t>
        <t>references: one or more documents describing the action and
        any significant updates to its definition
        (this field is required for actions described in RFCs and
        is optional otherwise);</t>
        <t>name(s) of Sieve capabilit(ies) associated with the Sieve
        action being registered;</t>
        <t>interactions with other Sieve actions (as described in Section 2.10.1 of <xref target="RFC5228"/>), if any;</t>
        <t>flag specifying whether the action cancels the implicit
        keep (see Section 2.10.2 of <xref target="RFC5228"/>);</t>
        <t>whether or not this action can be used with IMAP events in
        Sieve (<xref target="RFC6785"/>);</t>
        <t>optional comment.</t>
      </list>
      </t>

      <t>
      Registration procedure for this registry is Expert Review.
      The Designated Expert only checks that the name of the action being registered
      matches documentation, that the description field is accurate,
      that the correct documents are referenced and that the list of
      relevant documents is as complete as possible.
      The Designated Expert can’t reject a registration based on personal dislike of
      the document defining an action and should always err on the side of registering,
      even if documentation is not complete.
      </t>

      <t>
      Addition of a new reference to an existing registration or change to the description field goes through
      the same registration procedure as a new registration.
      </t>
      </section>

      <section title="Initial Sieve Action Registry">
        <t>The following table is used to initialize the actions
        registry. Note that when "Action Interactions" cell is empty it means that there is no restriction
        on use of the corresponding action with any other action, however implementors still need to read
        the corresponding specification(s) to see if there is are any surprising behaviour.</t>
        
        <!--///TBD: Review if any more information is needed in regards to "Use with IMAP Events? (RFC 6785)"-->

        <texttable>
          <ttcol>Name</ttcol>
          <ttcol>Description</ttcol>
          <ttcol>References</ttcol>
          <ttcol>Capabilities</ttcol>
          <ttcol>Action Interactions</ttcol>
          <ttcol>Cancels Implicit Keep?</ttcol>
          <ttcol>Can use with IMAP Events?</ttcol>
          <ttcol>Comments</ttcol>

          <c>addheader</c>
          <c>Add a header field to the existing message header</c>
          <c><xref target="RFC5293"/></c>
          <c>"editheader"</c>
          <c>All subsequent tests and actions apply to the altered message</c>
          <c>No</c>
          <c/>
          <c/>

          <c>addflag</c>
          <c>Add IMAP flags to a list of IMAP flags that would be set on the message if it gets delivered to a mailbox</c>
          <c><xref target="RFC5232"/>, <xref target="RFC5229"/></c>
          <c>"imap4flags", "variables"</c>
          <c/>
          <c>No</c>
          <c/>
          <c/>

          <c>convert</c>
          <c>Convert body parts from one MIME type to another</c>
          <c><xref target="RFC6558"/></c>
          <c>"convert"</c>
          <c>All subsequent tests and actions apply to the altered message</c>
          <c>No</c>
          <c/>
          <c/>

          <c>deleteheader</c>
          <c>Remove a header field from the existing message header</c>
          <c><xref target="RFC5293"/></c>
          <c>"editheader"</c>
          <c>All subsequent tests and actions apply to the altered message</c>
          <c>No</c>
          <c/>
          <c/>

          <c>discard</c>
          <c>Silently throw away the message</c>
          <c><xref target="RFC5228"/></c>
          <c/>
          <c/>
          <c>Yes</c>
          <c/>
          <c/>

          <c>enclose</c>
          <c>Enclose a message as an attachment to a new message</c>
          <c><xref target="RFC5703"/></c>
          <c>"enclose"</c>
          <c>All subsequent tests and actions, except "redirect" apply
          to the altered message</c>
          <c>No</c>
          <c/>
          <c/>

          <c>ereject</c>
          <c>Refuse delivery of the message</c>
          <c><xref target="RFC5429"/></c>
          <c>"ereject"</c>
          <c/>
          <c>Yes</c>
          <c>No</c>
          <c/>

          <c>extracttext</c>
          <c>Store text of a MIME part into a variable</c>
          <c><xref target="RFC5703"/>, <xref target="RFC5229"/></c>
          <c>"extracttext", "variables"</c>
          <c/>
          <c>No</c>
          <c/>
          <c/>

          <c>fileinto</c>
          <c>Deliver the message into the specified mailbox</c>
          <c><xref target="RFC5228"/>, <xref target="RFC3894"/>,
          <xref target="RFC5232"/>, <xref target="RFC5490"/>,
          <xref target="RFC9042"/>, <xref target="RFC8579"/></c>
          <c>"fileinto", "copy", "imap4flags", "mailbox", "mailboxid",
          "special-use"</c>
          <c>Use of :copy suppresses cancelation of implicit keep</c>
          <c>Yes</c>
          <c/>
          <c/>

          <c>keep</c>
          <c>File message into the user's main mailbox</c>
          <c><xref target="RFC5228"/>, <xref target="RFC5232"/></c>
          <c>"imap4flags"</c>
          <c/>
          <c>Yes</c>
          <c/>
          <c/>

          <c>notify</c>
          <c>Send a notification to a user</c>
          <c><xref target="RFC5435"/>, <xref target="RFC8580"/></c>
          <c>"enotify", "fcc"</c>
          <c/>
          <c>No</c>
          <c/>
          <c/>

          <c>redirect</c>
          <c>Send (forward) the message to another user</c>
          <c><xref target="RFC5228"/>, <xref target="RFC3894"/>,
          <xref target="RFC6009"/>, <xref target="RFC6134"/></c>
          <c>"copy", "redirect-dsn", "redirect-deliverby", "extlists"</c>
          <c>Use of :copy suppresses cancelation of implicit keep</c>
          <c>Yes</c>
          <c/>
          <c/>

          <c>reject</c>
          <c>Refuse delivery of the message</c>
          <c><xref target="RFC5429"/></c>
          <c>"reject"</c>
          <c/>
          <c>Yes</c>
          <c>No</c>
          <c/>

          <c>removeflag</c>
          <c>Remove IMAP flags from a list of IMAP flags that would be set on the message if it gets delivered to a mailbox</c>
          <c><xref target="RFC5232"/>, <xref target="RFC5229"/></c>
          <c>"imap4flags", "variables"</c>
          <c/>
          <c>No</c>
          <c/>
          <c/>

          <c>replace</c>
          <c>Replace a MIME part</c>
          <c><xref target="RFC5703"/></c>
          <c>"replace"</c>
          <c>All subsequent tests and actions, except "redirect" apply
          to the altered message</c>
          <c>No</c>
          <c/>
          <c/>

          <c>set</c>
          <c>Store a value in a variable</c>
          <c><xref target="RFC5229"/></c>
          <c>"variables"</c>
          <c/>
          <c>No</c>
          <c/>
          <c/>

          <c>setflag</c>
          <c>
          Set IMAP system flags or keywords that would be set on the message if it gets delivered to a mailbox
          </c>
          <c><xref target="RFC5232"/>, <xref target="RFC5229"/></c>
          <c>"imap4flags", "variables"</c>
          <c/>
          <c>No</c>
          <c/>
          <c/>

          <c>vacation</c>
          <c>Vacation autoresponder</c>
          <c><xref target="RFC5230"/>, <xref target="RFC6131"/>,
          <xref target="RFC8580"/></c>
          <c>"vacation", "vacation-seconds", "fcc"</c>
          <c/>
          <c>No</c>
          <c>No</c>
          <c/>

        </texttable>
      </section>
	
    </section>

    <section title="Security Considerations" anchor="seccons">

	    <t>
      The sole purpose of this document is to create a new IANA registry,
      so it doesn't create new security considerations for Sieve implementations.
      </t>
      
      <t>
      The new registry should help Sieve extension writers and Sieve implementors
      track interactions between different Sieve actions, so it might improve quality
      of specifications and implementations, including security aspects.
      </t>

    </section>
    
  </middle>
  
  <back>
    <references title="Normative References">
      
      <?rfc include="reference.RFC.2119"?> <!-- Keywords, part 1 -->
      <?rfc include="reference.RFC.5228"?> <!-- Sieve -->
      <?rfc include="reference.RFC.6785"?> <!-- IMAP Sieve -->
      <?rfc include="reference.RFC.8174"?> <!-- Keywords, part 2 -->

    </references>

    <references title="Informative References">
      
      <?rfc include="reference.RFC.3894"?> <!-- Copy -->
      <?rfc include="reference.RFC.5229"?> <!-- Variables -->
      <?rfc include="reference.RFC.5230"?> <!-- Vacation -->
      <?rfc include="reference.RFC.5232"?> <!-- Imap4Flags -->
      <?rfc include="reference.RFC.5293"?> <!-- Editheader -->
      <?rfc include="reference.RFC.5429"?> <!-- [Extended] Reject -->
      <?rfc include="reference.RFC.5435"?> <!-- Notify -->
      <?rfc include="reference.RFC.5490"?> <!-- Mailbox -->
      <?rfc include="reference.RFC.5703"?> <!-- MIME -->
      <?rfc include="reference.RFC.6009"?> <!-- DSN / Deliver-By -->
      <?rfc include="reference.RFC.6131"?> <!-- Vacation-Seconds -->
      <?rfc include="reference.RFC.6134"?> <!-- Externally Stored Lists -->
      <?rfc include="reference.RFC.6558"?> <!-- Convert -->
      <?rfc include="reference.RFC.8579"?> <!-- Special-Use -->
      <?rfc include="reference.RFC.8580"?> <!-- FCC -->
      <?rfc include="reference.RFC.9042"?> <!-- Mailbox ID -->

    </references>

    <section title="Acknowledgements">
	
      <!--
      <t>
      Thank you to XXX for comments on this document.
      </t>
      -->

      <t>TBD.</t>
	
    </section>

  </back>
</rfc>
