draft-ietf-sieve-autoreply-04.txt   rfc6133.txt 
Sieve working group R. George Internet Engineering Task Force (IETF) R. George
Internet-Draft B. Leiba Request for Comments: 6133 B. Leiba
Intended status: Informational Huawei Technologies Category: Informational Huawei Technologies
Expires: July 14, 2011 A. Melnikov ISSN: 2070-1721 A. Melnikov
Isode Limited Isode Limited
January 10, 2011 July 2011
Sieve Email Filtering: Use of Presence Information with Auto Responder Sieve Email Filtering:
functionality Use of Presence Information with Auto-Responder Functionality
draft-ietf-sieve-autoreply-04
Abstract Abstract
This document describes how the Sieve email filtering language, along This document describes how the Sieve email filtering language, along
with some extensions, can be used to create automatic replies to with some extensions, can be used to create automatic replies to
incoming electronic mail messages based on the address book and incoming electronic mail messages based on the address book and
presence information of the recipient. presence information of the recipient.
Status of this Memo Status of This Memo
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 This document is not an Internet Standards Track specification; it is
Task Force (IETF). Note that other groups may also distribute published for informational purposes.
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months This document is a product of the Internet Engineering Task Force
and may be updated, replaced, or obsoleted by other documents at any (IETF). It represents the consensus of the IETF community. It has
time. It is inappropriate to use Internet-Drafts as reference received public review and has been approved for publication by the
material or to cite them other than as "work in progress." Internet Engineering Steering Group (IESG). Not all documents
approved by the IESG are a candidate for any level of Internet
Standard; see Section 2 of RFC 5741.
This Internet-Draft will expire on July 14, 2011. Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
http://www.rfc-editor.org/info/rfc6133.
Copyright Notice Copyright Notice
Copyright (c) 2011 IETF Trust and the persons identified as the Copyright (c) 2011 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. How To Create Auto-Replies . . . . . . . . . . . . . . . . . . 3
2. How To Create Auto Replies . . . . . . . . . . . . . . . . . . 4 3. Example Use Cases for Auto-Replies . . . . . . . . . . . . . . 3
4. Security Considerations . . . . . . . . . . . . . . . . . . . . 6
3. Example Use Cases for Auto Replies . . . . . . . . . . . . . . 4 5. Normative References . . . . . . . . . . . . . . . . . . . . . 8
4. Security Considerations . . . . . . . . . . . . . . . . . . . 8
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9
6. Normative References . . . . . . . . . . . . . . . . . . . . . 9
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 10
1. Introduction 1. Introduction
This document describes how the Sieve email filtering language This document describes how the Sieve email filtering language
[RFC5228], along with some extensions [RFC5230] [RFC5435] [RFC5228], along with some extensions [RFC5230] [RFC5435] [RFC6134]
[I-D.ietf-sieve-external-lists] [I-D.ietf-sieve-notify-presence] [RFC6132] [RFC6131], can be used to generate automatic replies to
[I-D.ietf-sieve-vacation-seconds] can be used to generate automatic incoming electronic mail messages based on the presence information
replies to incoming electronic mail messages based on the presence of the recipient. This can be used, for example, to inform the
information of the recipient. This can be used, for example, to sender that messages will not be answered immediately because the
inform the sender that messages will not be answered immediately recipient is busy or away.
because the recipient is busy or away.
The auto-reply message can additionally be based on information about The auto-reply message can additionally be based on information about
the sender from the recipient's address book, sub-lists therefrom, or the sender from the recipient's address book, sub-lists therefrom, or
other lists available to the recipient, so that different senders other lists available to the recipient, so that different senders
might get different responses. The recipient can create separate might get different responses. The recipient can create separate
rules for friends, family members, colleagues, and so on. rules for friends, family members, colleagues, and so on.
This can be used in mail filtering software, email-based information This can be used in mail filtering software, email-based information
services, and other automatic responder situations. There are many services, and other automatic responder situations. There are many
programs currently in use that automatically respond to email. Some programs currently in use that automatically respond to email. Some
of them send many useless or unwanted responses, or send responses to of them send many useless or unwanted responses, or send responses to
inappropriate addresses. The mechanism described herein will help to inappropriate addresses. The mechanism described herein will help
avoid those problems (but see the discussion in Section 4). avoid those problems (but see the discussion in Section 4).
Implementations need to take care of tracking previous messages Implementations need to take care of tracking previous messages
received from the same sender and they will start or stop sending received from the same sender, and they will start or stop sending
responses as the presence status of the recipient changes. responses as the presence status of the recipient changes.
An important note, though: users of any auto-reply mechanism should An important note, though: users of any auto-reply mechanism should
really think about whether automatic replies are necessary, and at really think about whether automatic replies are necessary, and at
what interval they make sense when they are. Email is not Instant what interval they make sense when they are. Email is not Instant
Messaging, and senders generally expect that replies might take a Messaging, and senders generally expect that replies might take a
while. Consider whether it's truly important to tell people that while. Consider whether it's truly important to tell people that
you'll read their mail in an hour or so, or whether that can just be you'll read their mail in an hour or so, or whether that can just be
taken as how email works. There are times when this makes sense, but taken as how email works. There are times when this makes sense, but
let's not use it to exacerbate information overload. Judicious use let's not use it to exacerbate information overload. Judicious use
of appropriate presence information might serve to mitigate these of appropriate presence information might serve to mitigate these
issues. issues.
Implementors, therefore, need to consider this with respect to the Implementors, therefore, need to consider this with respect to the
features they expose to users, and the potential for inappropriate features they expose to users, and the potential for inappropriate
use those features represent. The ability to create auto-responders use those features represent. The ability to create auto responders
might be hidden behind an "advanced" button, and users might be might be hidden behind an "advanced" button, and users might be
warned of the consequences, and advised of the considerations in the warned of the consequences and advised of the considerations in the
previous paragraph. previous paragraph.
2. How To Create Auto Replies 2. How To Create Auto-Replies
When an email message arrives, the Sieve script can use the When an email message arrives, the Sieve script can use the
notify_method_capability of the Notify extension [RFC5435] to check notify_method_capability of the Notify extension [RFC5435] to check
the recipient's presence information. The Notify-presence extension the recipient's presence information. The Notify-presence extension
[I-D.ietf-sieve-notify-presence] makes additional presence, such as [RFC6132] makes additional presence, such as "away" and "do not
"away" and "do not disturb" status, available. The script can use disturb" status, available. The script can use the External-lists
the External-lists extension [I-D.ietf-sieve-external-lists] to look extension [RFC6134] to look the sender up in the recipient's address
the sender up in the recipient's address book or other list. If the book or other list. If the information retrieved warrants an auto-
information retrieved warrants an auto-reply message, the message can reply message, the message can then be composed based on that
then be composed based on that information. information.
The Vacation extension [RFC5230] provides an easy way to send the The Vacation extension [RFC5230] provides an easy way to send the
auto-reply message to the sender, as it automatically keeps track of auto-reply message to the sender, as it automatically keeps track of
the automatic replies and attempts to avoid excessive messages and the automatic replies and attempts to avoid excessive messages and
mail loops. The Vacation-seconds extension mail loops. The Vacation-seconds extension [RFC6131] allows auto-
[I-D.ietf-sieve-vacation-seconds] allows auto-replies to be sent this replies to be sent this way more frequently than once per day, when
way more frequently than once per day, when that's appropriate. that's appropriate. (Alternatively, the script can use the Notify
(Alternatively, the script can use the Notify extension,[RFC5435] and extension [RFC5435] to send a notification by a means other than
it can use that to send a notification by a means other than email.) email.)
Personal and Group Responders can refuse to generate responses except Personal and Group Responders can refuse to generate responses except
to known correspondents or addresses otherwise known to the to known correspondents or addresses otherwise known to the
recipient. Such responders can also generate different kinds of recipient. Such responders can also generate different kinds of
responses for "trusted" vs "untrusted" addresses. This might be responses for "trusted" vs. "untrusted" addresses. This might be
useful, for instance, to avoid inappropriate disclosure of personal useful, for instance, to avoid inappropriate disclosure of personal
or confidential information to arbitrary addresses. or confidential information to arbitrary addresses.
3. Example Use Cases for Auto Replies 3. Example Use Cases for Auto-Replies
1. In this example, we check that the envelope "from" is in the 1. In this example, we check that the envelope "from" is in the
recipient's address book [I-D.ietf-sieve-external-lists] and that recipient's address book [RFC6134] and that the recipient's
the recipient's presence shows "extended presence shows "extended away" [RFC6132]. If both of those are
away".[I-D.ietf-sieve-notify-presence] If both of those are true, true, the "vacation" action [RFC5230] is used to send an auto-
the "vacation" action [RFC5230] is used to send an auto-reply, reply, making sure we don't reply to the same sender more than
making sure we don't reply to the same sender more than once once every half hour [RFC6131]. The variables extension
every half hour.[I-D.ietf-sieve-vacation-seconds] The variables [RFC5229] is used to extract the value of the recipient's
extension [RFC5229] is used to extract the value of the natural-language presence status message, which will be used as
recipient's natural-language presence status message, which will the response to the sender.
be used as the response to the sender.
require ["envelope", "extlists", "enotify", "variables", require ["envelope", "extlists", "enotify", "variables",
"vacation-seconds"]; "vacation-seconds"];
if allof ( if allof (
envelope :list "from" "tag:example.com,2009-05-28:AddrBook", envelope :list "from" ":addrbook:default",
notify_method_capability "xmpp:me@example.com" "show" "xa" notify_method_capability "xmpp:me@example.com" "show" "xa"
) { ) {
# :matches "*" is used here to extract the value # :matches "*" is used here to extract the value
if notify_method_capability :matches if notify_method_capability :matches
"xmpp:myjid@example.com" "status" "*" { "xmpp:myjid@example.com" "status" "*" {
set "resp_msg" "${1}"; set "resp_msg" "${1}";
} else { } else {
set "resp_msg" "Away for a while, without access to email."; set "resp_msg" "Away for a while, without access to email.";
} }
vacation :handle "ext-away" :seconds 1800 "${resp_msg}"; vacation :handle "ext-away" :seconds 1800 "${resp_msg}";
} }
2. In the next example, we'll check for the recipient's personal 2. In the next example, we'll check for the recipient's personal
assistant, and give very detailed information about the assistant, and give very detailed information about the
recipient's status to that sender. For other senders in the recipient's status to that sender. For other senders in the
"family" and "friends" lists we'll also send an auto-reply. "family" and "friends" lists, we'll also send an auto-reply.
Other senders will be considered less important, and don't need Other senders will be considered less important, and don't need
auto-replies. auto-replies.
require ["envelope", "extlists", "enotify", "vacation-seconds"]; require ["envelope", "extlists", "enotify", "vacation-seconds"];
if envelope :is "from" "assistant@example.com" if envelope :is "from" "assistant@example.com"
{ {
if notify_method_capability "xmpp:me@example.com" "show" "away" if notify_method_capability "xmpp:me@example.com" "show" "away"
{ {
vacation :handle "away" :seconds 600 vacation :handle "away" :seconds 600
skipping to change at page 6, line 29 skipping to change at page 5, line 4
elsif notify_method_capability "xmpp:me@example.com" "show" "xa" elsif notify_method_capability "xmpp:me@example.com" "show" "xa"
{ {
vacation :handle "ext-away" :seconds 3600 vacation :handle "ext-away" :seconds 3600
"I'm away for a while, without access to email."; "I'm away for a while, without access to email.";
} }
elsif notify_method_capability "xmpp:me@example.com" "busy" "yes" elsif notify_method_capability "xmpp:me@example.com" "busy" "yes"
{ {
vacation :handle "busy" :seconds 1800 vacation :handle "busy" :seconds 1800
"I'm very busy, but might check email now and then."; "I'm very busy, but might check email now and then.";
} }
} }
elsif envelope :list "from" ["tag:example.com,2009-05-28:family", elsif envelope :list "from" [":addrbook:family",
"tag:example.com,2009-05-28:friends"] ":addrbook:friends"]
{ {
if notify_method_capability "xmpp:me@example.com" "show" if notify_method_capability "xmpp:me@example.com" "show"
["away", "dnd", "xa"] ["away", "dnd", "xa"]
{ {
vacation :handle "away" :seconds 3600 vacation :handle "away" :seconds 3600
"I'm not available to respond to email."; "I'm not available to respond to email.";
} }
} }
else else
{ # We could respond as below, making it only once a day { # We could respond as below, making it only once a day
skipping to change at page 7, line 14 skipping to change at page 5, line 34
3. For this example, if the sender is a work colleague and the 3. For this example, if the sender is a work colleague and the
recipient is on extended away status, then reply with a message recipient is on extended away status, then reply with a message
giving alternative contact information. The message might also giving alternative contact information. The message might also
include details about the reason for the absence, or other include details about the reason for the absence, or other
personal or confidential information that shouldn't be shared personal or confidential information that shouldn't be shared
with senders who aren't associated with the recipient's company. with senders who aren't associated with the recipient's company.
require ["envelope", "extlists", "enotify", "vacation"]; require ["envelope", "extlists", "enotify", "vacation"];
if envelope :list "from" "tag:example.com,2009-05-28:co-workers" if envelope :list "from" ":addrbook:co-workers"
{ {
if notify_method_capability "xmpp:me@example.com" "show" "xa" if notify_method_capability "xmpp:me@example.com" "show" "xa"
{ {
vacation :handle "bigtrip" :days 3 vacation :handle "bigtrip" :days 3
"I'm on an extended business trip to Texas for the Foo "I'm on an extended business trip to Texas for the Foo
project. Contact my backup, Susan <susan@example.com>, project. Contact my backup, Susan <susan@example.com>,
or call my assistant on +1 666 555 1234 if you urgently or call my assistant on +1 666 555 1234 if you urgently
need to contact me."; need to contact me.";
} }
} }
4. This example is used to send an acknowledgment to every message 4. This example is used to send an acknowledgment to every message
received. A :seconds value of zero is used to reply to every received. A :seconds value of zero is used to reply to every
message, with no removal of duplicates to the same sender. This message, with no removal of duplicates to the same sender. This
requires that the Sieve engine allow an interval of zero; if it requires that the Sieve engine allow an interval of zero; if it
does not, and it imposes a minimum value, not every message will does not, and it imposes a minimum value, not every message will
receive an auto-reply. receive an auto-reply.
require ["envelope", "extlists", "vacation-seconds"]; require ["envelope", "extlists", "vacation-seconds"];
if not envelope :list "from" "tag:example.com,2009-05-28:staff" if not envelope :list "from" ":addrbook:staff"
{ {
vacation :handle "auto-resp" :seconds 0 vacation :handle "auto-resp" :seconds 0
"Your request has been received. A service "Your request has been received. A service
representative will contact you as soon as representative will contact you as soon as
possible, usually within one business day."; possible, usually within one business day.";
} }
5. This example uses the same structure to automatically send a copy 5. This example uses the same structure to automatically send a copy
of each incoming message to the recipient's backup, if the sender of each incoming message to the recipient's backup, if the sender
is a customer contact or co-worker, or if the message's subject is a customer contact or co-worker, or if the message's subject
includes the word "urgent". includes the word "urgent".
require ["envelope", "extlists", "enotify"]; require ["envelope", "extlists", "enotify"];
if anyof ( if anyof (
envelope :list "from" ["tag:example.com,2009-05-28:customers", envelope :list "from" [":addrbook:customers",
"tag:example.com,2009-05-28:co-workers"], ":addrbook:co-workers"],
header :contains "subject" "urgent" header :contains "subject" "urgent"
) { ) {
if notify_method_capability "xmpp:me@example.com" "show" "xa" if notify_method_capability "xmpp:me@example.com" "show" "xa"
{ {
redirect "susan@example.com"; # send a copy to my backup redirect "susan@example.com"; # send a copy to my backup
keep; # also keep a copy for myself keep; # also keep a copy for myself
} }
} }
} }
4. Security Considerations 4. Security Considerations
See the Security Considerations sections of the following See the Security Considerations sections of the following
specifications for discussion of security considerations not covered specifications for discussion of security considerations not covered
here: here:
Sieve base specification [RFC5228]
Sieve Vacation extension [RFC5230] o Sieve base specification [RFC5228]
Vacation "Seconds" parameter [I-D.ietf-sieve-vacation-seconds]
Sieve Externally Stored Lists extension o Sieve Vacation extension [RFC5230]
[I-D.ietf-sieve-external-lists]
Sieve Notify extension [RFC5435] (and any applicable notification o Vacation "Seconds" parameter [RFC6131]
methods) o Sieve Externally Stored Lists extension [RFC6134]
o Sieve Notify extension [RFC5435] (and any applicable notification
methods)
This document describes how to set up a system that creates automatic This document describes how to set up a system that creates automatic
replies in an intelligent way. Despite the "intelligence", errors in replies in an intelligent way. Despite the "intelligence", errors in
scripts can result in too many auto-reply messages, especially when scripts can result in too many auto-reply messages, especially when
the reply interval is minimal (using the "notify" action, or the the reply interval is minimal (using the "notify" action, or the
"vacation" action with a small value for ":seconds"). "vacation" action with a small value for ":seconds").
Despite the "intelligence", too, errors in scripts can result in Despite the "intelligence", too, errors in scripts can result in
private information getting to senders inappropriately. In example 3 private information getting to senders inappropriately. In example 3
in Section 3, for instance, if the :list test checks the wrong list, in Section 3, for instance, if the :list test checks the wrong list,
or none at all, information about the recipient's business trip might or none at all, information about the recipient's business trip might
be sent to someone who has no need to know about it, and shouldn't. be sent to someone who has no need to know about it, and that
information should not have been sent.
Even without errors in scripts, a sender who recognizes that auto- Even without errors in scripts, a sender who recognizes that auto-
replies are dependent upon the recipient's presence can use that fact replies are dependent upon the recipient's presence can use that fact
to probe the presence information. One result of that can be that to probe the presence information. One result of that can be that
the sender discerns changes in the recipient's presence that the the sender discerns changes in the recipient's presence that the
sender would normally not be allowed to see, making this an sender would normally not be allowed to see, making this an
unintentional back door into the user's presence information. unintentional back door into the user's presence information.
Another result is that this can create a "covert channel", allowing Another result is that this can create a "covert channel", allowing
the recipient to send information to a sender by changing his the recipient to send information to a sender by changing his
presence information, his address book, and/or his Sieve script presence information, his address book, and/or his Sieve script
(though in this regard, the exposure is comparable to any other case (though in this regard, the exposure is comparable to any other case
of shared presence information). of shared presence information).
An autoresponder can cause leaks of other pieces of information, An auto responder can cause leaks of other pieces of information,
including potentially providing the ability to attack cryptographic including potentially providing the ability to attack cryptographic
keying material. For example, using the time it takes to perform an keying material. For example, using the time it takes to perform a
cryptographic operation, an attacker may obtain information about the cryptographic operation, an attacker may obtain information about the
secret key. An autoresponder that doesn't take timing into account secret key. An auto responder that doesn't take timing into account
could accidentally leak this kind of information. could accidentally leak this kind of information.
Moreover, if an autoresponder script directly returns the results of Moreover, if an auto responder script directly returns the results of
a cryptographic operation, that could also provide an attack vector. a cryptographic operation, that could also provide an attack vector.
For example, if a script returns the results of a decryption For example, if a script returns the results of a decryption
operation, an attacker can send an arbitrarily encrypted message and operation, an attacker can send an arbitrarily encrypted message and
use the results as a chosen cyphertext attack to decode the use the results as a chosen cyphertext attack to decode the
encryption key. Authors of scripts should be careful in what encryption key. Authors of scripts should be careful about what
information they return to senders. information they return to senders.
5. IANA Considerations 5. Normative References
There are no IANA actions required by this document.
6. Normative References
[I-D.ietf-sieve-external-lists]
Melnikov, A. and B. Leiba, "Sieve Extension: Externally
Stored Lists", draft-ietf-sieve-external-lists-02 (work in
progress), May 2010.
[I-D.ietf-sieve-notify-presence]
George, R. and B. Leiba, "Sieve Notification Using
Presence Information", draft-ietf-sieve-notify-presence-01
(work in progress), October 2010.
[I-D.ietf-sieve-vacation-seconds]
George, R. and B. Leiba, "Sieve Vacation Extension:
"Seconds" parameter", draft-ietf-sieve-vacation-seconds-01
(work in progress), October 2010.
[RFC5228] Guenther, P. and T. Showalter, "Sieve: An Email Filtering [RFC5228] Guenther, P. and T. Showalter, "Sieve: An Email Filtering
Language", RFC 5228, January 2008. Language", RFC 5228, January 2008.
[RFC5229] Homme, K., "Sieve Email Filtering: Variables Extension", [RFC5229] Homme, K., "Sieve Email Filtering: Variables Extension",
RFC 5229, January 2008. RFC 5229, January 2008.
[RFC5230] Showalter, T. and N. Freed, "Sieve Email Filtering: [RFC5230] Showalter, T. and N. Freed, "Sieve Email Filtering:
Vacation Extension", RFC 5230, January 2008. Vacation Extension", RFC 5230, January 2008.
[RFC5435] Melnikov, A., Leiba, B., Segmuller, W., and T. Martin, [RFC5435] Melnikov, A., Leiba, B., Segmuller, W., and T. Martin,
"Sieve Email Filtering: Extension for Notifications", "Sieve Email Filtering: Extension for Notifications",
RFC 5435, January 2009. RFC 5435, January 2009.
[RFC6131] George, R. and B. Leiba, "Sieve Vacation Extension:
"Seconds" Parameter", RFC 6131, July 2011.
[RFC6132] George, R. and B. Leiba, "Sieve Notification Using
Presence Information", RFC 6132, July 2011.
[RFC6134] Melnikov, A. and B. Leiba, "Sieve Extension: Externally
Stored Lists", RFC 6134, July 2011.
Authors' Addresses Authors' Addresses
Robins George Robins George
Huawei Technologies Huawei Technologies
Bangalore, Karnataka 560071 Bangalore, Karnataka 560071
India India
Phone: +91-080-41117676 Phone: +91-080-41117676
Email: robinsgv@gmail.com EMail: robinsgv@gmail.com
Barry Leiba Barry Leiba
Huawei Technologies Huawei Technologies
Phone: +1 646 827 0648 Phone: +1 646 827 0648
Email: barryleiba@computer.org EMail: barryleiba@computer.org
URI: http://internetmessagingtechnology.org/ URI: http://internetmessagingtechnology.org/
Alexey Melnikov Alexey Melnikov
Isode Limited Isode Limited
5 Castle Business Village, 36 Station Road 5 Castle Business Village, 36 Station Road
Hampton, Middlesex TW12 2BX Hampton, Middlesex TW12 2BX
UK UK
Email: Alexey.Melnikov@isode.com EMail: Alexey.Melnikov@isode.com
URI: http://www.melnikov.ca/ URI: http://www.melnikov.ca/
 End of changes. 38 change blocks. 
112 lines changed or deleted 95 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/