Internet-Draft | Structured vacation notices | July 2024 |
Happel | Expires 9 January 2025 | [Page] |
This document describes a machine-readable format for vacation notice messages. It is supposed to be used in conjunction with conventional, human-readable vacation notices.¶
Structured vacation notices are based on the "structured email" specifications defined in [I-D.ietf-sml-structured-email-01] and related drafts.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 9 January 2025.¶
Copyright (c) 2024 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
A "vacation notice" (also known as "out-of-office notice" [RFC3834][RFC5598] or "-reply") 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.¶
Its content is written by the absentee in advance. The MUA will use it in automatic replies to incoming email messages, based on conditions set by the user. The most commonly used condition, supported by many MUAs is the time period during which incoming messages should be automatically answered with a vacation notice.¶
Vacation notices are not fully standardized as such. A partial, implicit specification is contained in [RFC5230], which specifies an extension to the Sieve email filtering language.¶
On the side of the absentee, vacation notices might be partially formalized, e.g., with respect to the time period mentioned before. For the receipient however, vacation notices only consist of human-readable language.¶
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.¶
While this specification may be used stand-alone, is aims to be compliant to the "structured email" specification ([I-D.ietf-sml-structured-email-01]) and its trust and security recommendations ([I-D.happel-structured-email-trust-00]).¶
The term "message" refers to "electronic mail messages" or "emails" as specified in [RFC5322].¶
The term "Message User Agent" (MUA) denotes an email client application as per [RFC5598]. Based on the role of the communication partners, one can further distiguish into "Recipient MUA" (rMUA) and "Author MUA" (aMUA).¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
The minimum data for a vacation notice is the actual notice content as specified by the absentee. It might be as short as "I am currently out of office".¶
Many systems also allow to specify a time range during which a vacation notice should be sent. As for the Sieve vacation extension ([RFC5230]), it is often used in conjuction with a currentdate
test ([RFC5260]) to achieve this.¶
Notably, this time range must not exactly match the actual absence time, even though this is mostly the case in practice.¶
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.¶
The following snippet shows a potential extension to the [SchemaOrg] vocabulary in [JSONLD] format.¶
{ "@context": "https://schema.org", "@type": "OutOfOffice", "start": "2023-08-15", "end": "2023-08-22", "isForwarded": false, "replacement": [ { "@type": "OutOfOfficeReplacement", "name": "John Doe", "topic": "Project A", "email": "john@doe.com", "phone": "+1234567890" }, { "@type": "OutOfOfficeReplacement", "name": "Jane Doe", "topic": "Project B", "email": "jane@doe.com", "phone": "+9876543210" } ], "note": "Some text" }¶
Note that this is a preliminary specification only. Do not use in practice.¶
For discussion, see also: https://github.com/hhappel/draft-happel-sml-structured-vacation-notices/issues/1¶
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.¶
The absentee can make use of structured vacation notices in common vacation notice autoreplies but also in regular messages.¶
For including a structured vacation notice, a JSON-LD snippet using the OutOfOffice
-type defined in the previous section needs to be embedded in the text/html
representation of the vacation notice email.¶
In systems using the Sieve "vacation" extension ([RFC5230]), text/html
body parts are supported when using the parameter to include MIME content (:mime
).¶
If the user interface already allows to set date ranges, the structured vacation notice data may be added without extra user effort.¶
Structured vacation notices can support a second use case, in which information can be preemptively added to regular outgoing email messages by the absentee.¶
This may be helpful in three scenarios, if an absentee sends a message:¶
If an incoming vacation notice contains structured vacation notice data, the MUA of the communication partner MAY extract and store this data.¶
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:¶
As described before, the absentee may decide to add structured vacation notices in regular messages sent before or during her absence.¶
When receiving such messages, the MUA of the communication partner MAY extract and store the structured vacation notice and MAY display the absence information.¶
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 inform its user about this upcoming or ongoing absence.¶
The following points should be considered when implementing (structured) vacation notices from a sender and recipient-side processing perspective.¶
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 explicit coonsent or action of the user.¶
A vacation notice including structured data should always include an alternative, human-readable version of the vacation notice using text/plain
and/or text/html
multipart/alternative
body parts.¶
A MUA MUST ignore structured vacation notices with time ranges in the past.¶
If multiple structured vacation notices exist for a user, prefer the one from the most recently received message.¶
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.¶
< RFC Editor: before publication please remove this section and the reference to [RFC7942] >¶
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 [RFC7942]. 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.¶
According to [RFC7942], "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".¶
This draft is implemented in an open source plugin for the Roundcube Webmail system [RC-SVN], partly based on the Roundcube managesieve plugin.¶
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:¶
Vacation notices expose certain potentially sensitive information to third parties, such as absence times, absence reasons and organizational details (such as replacement staff and their contact information).¶
For this reason, absentees typically are free to decide how much information they expose in the written text of their vacation notice.¶
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.¶
Information exposure might also be limited by restricting the usage of structured vacation notices to certain communication partners (e.g., using address book information [RFC6134] as discussed in [RFC6133]).¶
This document has no IANA actions at this time.¶
The following vCard X-Properties
are currently used by the [RC-SVN] implementation to store incoming structured vacation notice data of absentees. I.e., if an email message with a structured vacation notice is processed, the implementation will lookup the absentee in the user's address book and store the absence information, if an address book entry was found.¶
While this is mostly for internal data management in [RC-SVN], standardizing the vCard properties could be useful from a data portability perspective.¶
Most X-Properties
directly map to the example OutOfOffice
JSON-LD snippet above, X-OOF-UPDATED
was added to store the receiving date of the email message which contained the structured vacation notice.¶
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¶