draft-ietf-sieve-autoreply-01.txt   draft-ietf-sieve-autoreply-02.txt 
skipping to change at page 1, line 13 skipping to change at page 1, line 13
Sieve working group R. George Sieve working group R. George
Internet-Draft Internet-Draft
Intended status: Informational B. Leiba Intended status: Informational B. Leiba
Expires: April 15, 2011 Huawei Technologies Expires: April 15, 2011 Huawei Technologies
A. Melnikov A. Melnikov
Isode Limited Isode Limited
October 12, 2010 October 12, 2010
Sieve Email Filtering: Use of Presence Information with Auto Responder Sieve Email Filtering: Use of Presence Information with Auto Responder
functionality functionality
draft-ietf-sieve-autoreply-01 draft-ietf-sieve-autoreply-02
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
skipping to change at page 2, line 22 skipping to change at page 2, line 22
2. How To Create Auto Replies . . . . . . . . . . . . . . . . . . 3 2. How To Create Auto Replies . . . . . . . . . . . . . . . . . . 3
3. Example Use Cases for Auto Replies . . . . . . . . . . . . . . 4 3. Example Use Cases for Auto Replies . . . . . . . . . . . . . . 4
4. Security Considerations . . . . . . . . . . . . . . . . . . . . 7 4. Security Considerations . . . . . . . . . . . . . . . . . . . . 7
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 8 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 8
6. Normative References . . . . . . . . . . . . . . . . . . . . . 8 6. Normative References . . . . . . . . . . . . . . . . . . . . . 8
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 8 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 9
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]
[I-D.ietf-sieve-external-lists] [I-D.ietf-sieve-notify-presence] [I-D.ietf-sieve-external-lists] [I-D.ietf-sieve-notify-presence]
[I-D.ietf-sieve-vacation-seconds] can be used to generate automatic [I-D.ietf-sieve-vacation-seconds] can be used to generate automatic
replies to incoming electronic mail messages based on the presence replies to incoming electronic mail messages based on the presence
information of the recipient. This can be used, for example, to information of the recipient. This can be used, for example, to
inform the sender that messages will not be answered immediately inform the sender that messages will not be answered immediately
skipping to change at page 4, line 22 skipping to change at page 4, line 22
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 [I-D.ietf-sieve-external-lists] and that
the recipient's presence shows "extended the recipient's presence shows "extended
away".[I-D.ietf-sieve-notify-presence] If both of those are true, away".[I-D.ietf-sieve-notify-presence] If both of those are true,
the "vacation" action [RFC5230] is used to send an auto-reply, the "vacation" action [RFC5230] is used to send an auto-reply,
making sure we don't reply to the same sender more than once making sure we don't reply to the same sender more than once
every half hour.[I-D.ietf-sieve-vacation-seconds] The variables every half hour.[I-D.ietf-sieve-vacation-seconds] The variables
extension [RFC5229] is used to extract the value of the extension [RFC5229] is used to extract the value of the
recipient's natural-language presence status message, which will recipient's natural-language presence status message, which will
be used in the response to the sender. be used as the response to the sender.
require ["extlists", "enotify", "variables", "vacation-seconds"]; require ["envelope", "extlists", "enotify", "variables",
"vacation-seconds"];
if allof ( if allof (
envelope :list "from" "tag:example.com,2009-05-28:AddrBook", envelope :list "from" "tag:example.com,2009-05-28:AddrBook",
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 several lists or sublists, auto- 2. In the next example, we'll check several lists or sublists, auto-
replying to everyone, but sending more detail about the replying to everyone, but sending more detail about the
recipient's status to senders who are found in the recipient's recipient's status to senders who are found in the recipient's
address book, and still more detail to those in the "family" and address book, and still more detail to those in the "family" and
"friends" lists. "friends" lists.
require ["extlists", "enotify", "vacation-seconds"]; require ["envelope", "extlists", "enotify", "vacation-seconds"];
if envelope :list "from" ["tag:example.com,2009-05-28:family", if envelope :list "from" ["tag:example.com,2009-05-28:family",
"tag:example.com,2009-05-28:friends"] "tag:example.com,2009-05-28:friends"]
{ {
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
"I'm away for now, but I'll be back soon."; "I'm away for now, but I'll be back soon.";
} }
elsif notify_method_capability "xmpp:me@example.com" "show" "dnd" elsif notify_method_capability "xmpp:me@example.com" "show" "dnd"
skipping to change at page 6, line 7 skipping to change at page 6, line 7
"I got your message, and might read it eventually."; "I got your message, and might read it eventually.";
} }
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 ["extlists", "enotify", "vacation"]; require ["envelope", "extlists", "enotify", "vacation"];
if envelope :list "from" "tag:example.com,2009-05-28:co-workers" if envelope :list "from" "tag:example.com,2009-05-28: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 ["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" "tag:example.com,2009-05-28: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 ["extlists", "enotify"]; require ["envelope", "extlists", "enotify"];
if anyof ( if anyof (
envelope :list "from" ["tag:example.com,2009-05-28:customers", envelope :list "from" ["tag:example.com,2009-05-28:customers",
"tag:example.com,2009-05-28:co-workers"], "tag:example.com,2009-05-28: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 referenced specifications, below for discussion of security See the Security Considerations sections of the following
considerations for Sieve scripts in general, and for each of the specifications for discussion of security considerations not covered
extensions in particular. here:
Sieve base specification [RFC5228]
Sieve Vacation extension [RFC5230]
Vacation "Seconds" parameter [I-D.ietf-sieve-vacation-seconds]
Sieve Externally Stored Lists extension
[I-D.ietf-sieve-external-lists]
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,
skipping to change at page 8, line 27 skipping to change at page 8, line 34
6. Normative References 6. Normative References
[I-D.ietf-sieve-external-lists] [I-D.ietf-sieve-external-lists]
Melnikov, A. and B. Leiba, "Sieve Extension: Externally Melnikov, A. and B. Leiba, "Sieve Extension: Externally
Stored Lists", draft-ietf-sieve-external-lists-02 (work in Stored Lists", draft-ietf-sieve-external-lists-02 (work in
progress), May 2010. progress), May 2010.
[I-D.ietf-sieve-notify-presence] [I-D.ietf-sieve-notify-presence]
George, R. and B. Leiba, "Sieve Notification Using George, R. and B. Leiba, "Sieve Notification Using
Presence Information", draft-ietf-sieve-notify-presence-00 Presence Information", draft-ietf-sieve-notify-presence-01
(work in progress), June 2010. (work in progress), October 2010.
[I-D.ietf-sieve-vacation-seconds] [I-D.ietf-sieve-vacation-seconds]
George, R. and B. Leiba, "Sieve Vacation Extension: George, R. and B. Leiba, "Sieve Vacation Extension:
"Seconds" parameter", draft-ietf-sieve-vacation-seconds-00 "Seconds" parameter", draft-ietf-sieve-vacation-seconds-01
(work in progress), June 2010. (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.
 End of changes. 11 change blocks. 
15 lines changed or deleted 23 lines changed or added

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