<?xml version="1.0" encoding="utf-8"?>
<!-- name="GENERATOR" content="github.com/mmarkdown/mmark Mmark Markdown Processor - mmark.miek.nl" -->
<rfc version="3" ipr="trust200902" docName="draft-happel-sml-structured-vacation-notices-00" submissionType="IETF" category="std" xml:lang="en" xmlns:xi="http://www.w3.org/2001/XInclude" indexInclude="true" consensus="true">

<front>
<title>Structured vacation notices</title><seriesInfo value="draft-happel-sml-structured-vacation-notices-00" stream="IETF" status="standard" name="Internet-Draft"></seriesInfo>
<author initials="H.-J." surname="Happel" fullname="Hans-Joerg Happel"><organization>audriga GmbH</organization><address><postal><street></street>
</postal><email>happel@audriga.com</email>
<uri>https://www.audriga.com</uri>
</address></author><date/>
<area>ART</area>
<workgroup>SML</workgroup>

<abstract>
<t>This document describes a machine-readable format for vacation notice messages. It is supposed to be used in conjuction with conventional, human-readable vacation notices.</t>
</abstract>

</front>

<middle>

<section anchor="introduction"><name>Introduction</name>
<t>A &quot;vacation notice&quot; (also known as &quot;out-of-office notice&quot; <xref target="RFC3834"></xref><xref target="RFC5598"></xref> or &quot;-reply&quot;) is a special type of automated message which is sent in response to incoming mail, if the recipient is absent or otherwise unable to answer immediately.</t>
<t>Its content is written by the absentee in advance, before it is sent automatically by a MUA. Many MUAs also allow to specify the exact time period during which incoming messages should be automatically answered with a vacation notice.</t>
<t>Vacation notices are not standardized as such. <xref target="RFC5230"></xref> specifies an extension to the Sieve email filtering language. While vacation notices are partially formalized on the side of the absentee (e.g., start and end date), they consist of only human-readable language for their recipient.</t>
<t>The goal of this specification is to allow absentees to include a machine-readable version of the vacation notice, such that reicipients can be assisted by software when dealing with vacation notices.</t>
<t>While this specification may be used stand-alone, is aims to be compliant to the &quot;structured email&quot; specification ([I-D.ietf-sml-structured-email-00]) and its trust and securirty recommendations ([I-D.happel-structured-email-trust-00]).</t>
</section>

<section anchor="conventions-used-in-this-document"><name>Conventions Used in This Document</name>
<t>The term &quot;message&quot; refers to &quot;electronic mail messages&quot; or &quot;emails&quot; as specified in <xref target="RFC5322"></xref>.</t>
<t>The term &quot;Message User Agent&quot; (MUA) denotes an email client application as per <xref target="RFC5598"></xref>. Based on the role of the communication partners, one can further distiguish into &quot;Recipient MUA&quot; (rMUA) and &quot;Author MUA&quot; (aMUA).</t>
<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"></xref> <xref target="RFC8174"></xref> when, and only when, they appear in all capitals, as shown here.</t>
</section>

<section anchor="data-model"><name>Data model</name>
<t>The minimum data for a vacation notice is the actual notice content as specified by the absentee. It might be as short as &quot;I am currently out of office&quot;.</t>
<t>Many systems also allow to specify a time range during which a vacation notice should be sent. As for the Sieve vacation extension (<xref target="RFC5230"></xref>), it is often used in conjuction with a &quot;currentdate&quot; test ([RFC5260]) to achieve this.</t>
<t>Notably, this time range must not exactly match the actual absence time, even though this is mostly the case in practice.</t>
<t>Vacation notice content may also contain information about if a message is automatically forwarded to a replacement person, or details about replacement persons to contact.</t>
<t>The following snippet shows a potential extension to the <xref target="SchemaOrg"></xref> vocabulary in <xref target="JSONLD"></xref> format.</t>

<artwork>{
	&quot;@context&quot;: &quot;https://schema.org&quot;,
	&quot;@type&quot;: &quot;OutOfOffice&quot;,
	&quot;start&quot;: &quot;2023-08-15&quot;,
	&quot;end&quot;: &quot;2023-08-22&quot;,
	&quot;isForwarded&quot;: false,
	&quot;replacement&quot;: [
	    {
	        &quot;@type&quot;: &quot;OutOfOfficeReplacement&quot;,
	        &quot;name&quot;: &quot;John Doe&quot;,
	        &quot;topic&quot;: &quot;Project A&quot;,
	        &quot;email&quot;: &quot;john@doe.com&quot;,
	        &quot;phone&quot;: &quot;+1234567890&quot;
	    },
	    {
	        &quot;@type&quot;: &quot;OutOfOfficeReplacement&quot;,
	        &quot;name&quot;: &quot;Jane Doe&quot;,
	        &quot;topic&quot;: &quot;Project B&quot;,
	        &quot;email&quot;: &quot;jane@doe.com&quot;,
	        &quot;phone&quot;: &quot;+9876543210&quot;
	    }
	],
	&quot;note&quot;: &quot;Some text&quot;
}
</artwork>

<artwork>Note: This is a preliminary specification only. Do not use in practice.
</artwork>
</section>

<section anchor="use-cases"><name>Use cases</name>
<t>For the use cases, we distinguish the absentee, willing to answer incoming messages with a vacation notice, and communication partner(s), which want to send messages to the absentee.</t>

<section anchor="absentee"><name>Absentee</name>
<t>The absentee can make use of structured vacation notices in common vacation notice autoreplies but also in regular messages.</t>

<section anchor="outgoing-vacation-notice"><name>Outgoing vacation notice</name>
<t>For including a structured vacation notice, a JSON-LD snippet using the &quot;OutOfOffice&quot;-type defined in the previous section needs to be embedded in the text/html representation of the vacation notice email.</t>
<t>In systems using the Sieve &quot;vacation&quot; extension (<xref target="RFC5230"></xref>), text/html body parts are supported when using the parameter to include MIME content (&quot;:mime&quot;).</t>
<t>If the user interface already allows to set date ranges, the structured vacation notice data may be added without extra user effort.</t>
</section>

<section anchor="outgoing-preemptive-vaction-notice"><name>Outgoing preemptive vaction notice</name>
<t>Machine-readable markup allows absentees to also include structured vacation notices in regular messages sent before or during their absence.</t>
</section>
</section>

<section anchor="communication-partner"><name>Communication partner</name>

<section anchor="incoming-vacation-notice"><name>Incoming vacation notice</name>
<t>If an incoming vacation notice contains structured vacation notice data, the MUA of the communication partner MAY extract and store this data.</t>
<t>Since the MUA can make sense of the structured vacation notice, it MAY also employ various forms of user assistance at its own discretion, such as:</t>

<ul spacing="compact">
<li>Highlight the absence in a special way</li>
<li>Allow to take certain action (set reminder, forward message to replacement person)</li>
<li>Inform user when composing an email to a person known to be absent</li>
</ul>
</section>

<section anchor="incoming-preemtive-vacation-notice"><name>Incoming preemtive vacation notice</name>
<t>As described before, the absentee may decide to add structured vacation notices in regular messages sent before or during her absence.</t>
<t>When receiving such messages, the MUA of the communication partner MAY extract and store the structured vacation notice and MAY highlight the absence information.</t>
</section>

<section anchor="message-composition"><name>Message composition</name>
<t>If a communication partner wants to send a message to a person, for which a structured vacation notice has been received earlier, the MUA MAY notify its user about this upcoming or ongoing absence.</t>
</section>
</section>
</section>

<section anchor="related-use-cases"><name>Related use cases</name>
<t>There are some use cases which are somehow related to &quot;vacation notices&quot;, mostly by providing automated messages about a certain status of the recipient.</t>
<t>Those related use cases may be worth further consideration within the design space of this draft.</t>

<section anchor="change-of-address"><name>Change of address</name>
<t>As highlightd in [RFC3834], an automated response might also convey the fact that an email address has become obsolete or changed.</t>
</section>

<section anchor="new-contact-data"><name>New contact data</name>
<t>Beyond the email addresses, senders sometimes highlight updated information in the signature of a message, such as:</t>

<ul spacing="compact">
<li>Updated postal address</li>
<li>Updated phone number</li>
</ul>
</section>
</section>

<section anchor="implementation-guidance"><name>Implementation guidance</name>
<t>The following points should be considered when implementing (structured) vacation notices from a sender and recipient-side processing perspective.</t>

<section anchor="sending"><name>Sending</name>

<section anchor="leave-optional"><name>Leave optional</name>
<t>Adding structured data to a vacation notice should be left as a choice to the user. A MUA SHOULD not add structured data to vacation notices without informing the user.</t>
</section>

<section anchor="provide-alternative-representations"><name>Provide alternative representations</name>
<t>A vacation notice including structured data should always include an alternative, human-readable version of the vacation notice.</t>
</section>
</section>

<section anchor="processing"><name>Processing</name>

<section anchor="igore-past-time-ranges"><name>Igore past time ranges</name>
<t>Ignore structured vacation notices with time ranges in the past.</t>
</section>

<section anchor="prefer-latest-vacation-time-range"><name>Prefer latest vacation time range</name>
<t>If multiple structured vacation notices exist for a user, prefer the one from the most recent incoming message.</t>
</section>

<section anchor="strip-when-forwarding"><name>Strip when forwarding</name>
<t>In the case of preemptive structured vacation notices, strip the structured data  from the message when it is forwarded to a third party by the user.	</t>
</section>
</section>
</section>

<section anchor="implementation-status"><name>Implementation status</name>
<t>&lt; RFC Editor: before publication please remove this section and the reference to <xref target="RFC7942"></xref> &gt;</t>
<t>This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in <xref target="RFC7942"></xref>. The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs. Please note that the listing of any individual implementation here does not imply endorsement by the IETF. Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors. This is not intended as, and must not be construed to be, a catalog of available implementations or their features. Readers are advised to note that other implementations may exist.</t>
<t>According to <xref target="RFC7942"></xref>, &quot;this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature. It is up to the individual working groups to use this information as they see fit&quot;.</t>

<section anchor="structured-vacation-notice-plugin-for-roundcube-webmail"><name>Structured Vacation Notice plugin for Roundcube Webmail</name>
<t>This draft is implemented in an open source plugin for the Roundcube Webmail system <xref target="RC-SVN"></xref>, partly based on the Roundcube managesieve plugin.</t>
</section>
</section>

<section anchor="security-considerations"><name>Security considerations</name>
<t>In particular when using structured vacation notices in conjunction with the Sieve filtering language, the security considerations of the corresponding RFCs should be taken into account:</t>

<ul spacing="compact">
<li>Sieve base specification <xref target="RFC5228"></xref></li>
<li>Sieve Vacation extension <xref target="RFC5230"></xref></li>
<li>[I-D.happel-structured-email-trust-00]</li>
</ul>
</section>

<section anchor="privacy-considerations"><name>Privacy considerations</name>
<t>Vacation notices expose certain potentially sensitive information to third parties, such as absense times, absense reasons and organizational details (such as replacement staff and their contact information).</t>
<t>For this reason, absentees typically are free to decide how much information they expose in the writte n text of their vacation notice.</t>
<t>Accordingly, software systems SHOULD leave absentees the same level of freedom when adding structured vacation notices and e.g., not enforce the inclusion of certain information or even do so implicitly.</t>
<t>Information exposure might also be limited by restricting the usage of structured vacation notices to certain communication partners (e.g., using address book information <xref target="RFC6134"></xref> as discussed in <xref target="RFC6133"></xref>).</t>
</section>

<section anchor="iana-considerations"><name>IANA Considerations</name>
<t>This document has no IANA actions at this time.</t>
</section>

<section anchor="appendix-vcard-properties"><name>Appendix (vCard properties)</name>
<t>The following vCard &quot;X-Properties&quot; are currently used for internal storage of structured vacation notice data for external contacts of the mailbox user.</t>

<artwork>X-OOF-UPDATED:2023-10-01
X-OOF-START:2023-10-01
X-OOF-END:2023-11-01
X-OOF-IS-FORWARDED:false
X-OOF-REPLACEMENT:Jane Doe,Marketing,jane.doe@corp.com,+1234567-89
X-OOF-REPLACEMENT:John Doe,Development,john.doe@corp.com,+1234567-99
X-OOF-NOTE:I am out of office please reach my replacement instead
</artwork>
</section>

</middle>

<back>
<references><name>Informative References</name>
<reference anchor="JSONLD" target="https://www.w3.org/TR/json-ld/">
  <front>
    <title>JSON-LD 1.1</title>
    <author>
      <organization>W3C JSON-LD Working Group</organization>
    </author>
    <date></date>
  </front>
</reference>
<reference anchor="RC-SVN" target="https://github.com/audriga/roundcube-structured-vacation-notice/">
  <front>
    <title>Structured Vacation Notice plugin for Roundcube Webmail</title>
    <author>
      <organization>audriga GmbH</organization>
    </author>
    <date></date>
  </front>
</reference>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3834.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5228.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5230.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5322.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5598.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6133.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6134.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7942.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
<reference anchor="SchemaOrg" target="https://schema.org/">
  <front>
    <title>Schema.org</title>
    <author>
      <organization>W3C Schema.org Community Group</organization>
    </author>
    <date></date>
  </front>
</reference>
</references>

</back>

</rfc>
