idnits 2.17.1 draft-ietf-sieve-autoreply-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (June 23, 2010) is 5049 days in the past. Is this intentional? -- Found something which looks like a code comment -- if you have code sections in the document, please surround them with '' and '' lines. Checking references for intended status: Informational ---------------------------------------------------------------------------- == Outdated reference: A later version (-04) exists of draft-ietf-sieve-notify-presence-00 == Outdated reference: A later version (-03) exists of draft-ietf-sieve-vacation-seconds-00 == Outdated reference: A later version (-10) exists of draft-ietf-sieve-external-lists-02 Summary: 0 errors (**), 0 flaws (~~), 4 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Sieve working group R. George 3 Internet-Draft B. Leiba 4 Intended status: Informational Huawei Technologies 5 Expires: December 25, 2010 A. Melnikov 6 Isode Limited 7 June 23, 2010 9 Sieve Email Filtering: Use of Presence Information with Auto Responder 10 functionality 11 draft-ietf-sieve-autoreply-00 13 Abstract 15 This document describes how the Sieve email filtering language, along 16 with some extensions, can be used to create automatic replies to 17 incoming electronic mail messages based on the address book and 18 presence information of the recipient. 20 Status of this Memo 22 This Internet-Draft is submitted in full conformance with the 23 provisions of BCP 78 and BCP 79. 25 Internet-Drafts are working documents of the Internet Engineering 26 Task Force (IETF). Note that other groups may also distribute 27 working documents as Internet-Drafts. The list of current Internet- 28 Drafts is at http://datatracker.ietf.org/drafts/current/. 30 Internet-Drafts are draft documents valid for a maximum of six months 31 and may be updated, replaced, or obsoleted by other documents at any 32 time. It is inappropriate to use Internet-Drafts as reference 33 material or to cite them other than as "work in progress." 35 This Internet-Draft will expire on December 25, 2010. 37 Copyright Notice 39 Copyright (c) 2010 IETF Trust and the persons identified as the 40 document authors. All rights reserved. 42 This document is subject to BCP 78 and the IETF Trust's Legal 43 Provisions Relating to IETF Documents 44 (http://trustee.ietf.org/license-info) in effect on the date of 45 publication of this document. Please review these documents 46 carefully, as they describe your rights and restrictions with respect 47 to this document. Code Components extracted from this document must 48 include Simplified BSD License text as described in Section 4.e of 49 the Trust Legal Provisions and are provided without warranty as 50 described in the Simplified BSD License. 52 Table of Contents 54 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 56 2. How To Create Auto Replies . . . . . . . . . . . . . . . . . . 3 58 3. Example Use Cases for Auto Replies . . . . . . . . . . . . . . 4 60 4. Security Considerations . . . . . . . . . . . . . . . . . . . . 7 62 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 8 64 6. Normative References . . . . . . . . . . . . . . . . . . . . . 8 66 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 9 68 1. Introduction 70 This document describes how the Sieve email filtering language 71 [RFC5228], along with some extensions [RFC5230] [RFC5435] 72 [I-D.ietf-sieve-external-lists] [I-D.ietf-sieve-notify-presence] 73 [I-D.ietf-sieve-vacation-seconds] can be used to generate automatic 74 replies to incoming electronic mail messages based on the presence 75 information of the recipient. This can be used, for example, to 76 inform the sender that messages will not be answered immediately 77 because the recipient is busy or away. 79 The auto-reply message can additionally be based on information about 80 the sender from the recipient's address book, sub-lists therefrom, or 81 other lists available to the recipient, so that different senders 82 might get different responses. The recipient can create separate 83 rules for friends, family members, colleagues, and so on. 85 This can be used in mail filtering software, email-based information 86 services, and other automatic responder situations. There are many 87 programs currently in use that automatically respond to email. Some 88 of them send many useless or unwanted responses, or send responses to 89 inappropriate addresses. The mechanism described herein will help to 90 avoid those problems (but see the discussion in Section 4). 91 Implementations need to take care of tracking previous messages 92 received from the same sender and they will start or stop sending 93 responses as the presence status of the recipient changes. 95 [[Barry's question: One thing this makes me think of is whether we 96 want the ability to extract information from an external list. For 97 instance, it'd be nice to be able to go into the recipient's address 98 book for the sender's real name, or for a personalized message for 99 the sender. Not all lists will support this; should it be possible, 100 for lists that do?]] 102 2. How To Create Auto Replies 104 When an email message arrives, the Sieve script can use the 105 notify_method_capability of the Notify extension [RFC5435] to check 106 the recipient's presence information. The Notify-presence extension 107 [I-D.ietf-sieve-notify-presence] makes additional presence, such as 108 "away" and "do not disturb" status, available. The script can use 109 the External-lists extension [I-D.ietf-sieve-external-lists] to look 110 the sender up in the recipient's address book or other list. If the 111 information retrieved warrants an auto-reply message, the message can 112 then be composed based on that information. 114 The Vacation extension [RFC5230] provides an easy way to send the 115 auto-reply message to the sender, as it automatically keeps track of 116 the automatic replies and attempts to avoid excessive messages and 117 mail loops. The Vacation-seconds extension 118 [I-D.ietf-sieve-vacation-seconds] allows auto-replies to be sent this 119 way more frequently than once per day, when that's appropriate. 120 (Alternatively, the script can use the Notify extension,[RFC5435] and 121 it can use that to send a notification by a means other than email.) 123 Personal and Group Responders can refuse to generate responses except 124 to known correspondents or addresses otherwise known to the 125 recipient. Such responders can also generate different kinds of 126 responses for "trusted" vs "untrusted" addresses. This might be 127 useful, for instance, to avoid inappropriate disclosure of personal 128 or confidential information to arbitrary addresses. 130 3. Example Use Cases for Auto Replies 132 1. In this example, we check that the envelope "from" is in the 133 recipient's address book [I-D.ietf-sieve-external-lists] and that 134 the recipient's presence shows "extended 135 away".[I-D.ietf-sieve-notify-presence] If both of those are 136 true, the "vacation" action [RFC5230] is used to send an auto- 137 reply, making sure we don't reply to the same sender more than 138 once every half hour.[I-D.ietf-sieve-vacation-seconds] The 139 variables extension [RFC5229] is used to extract the value of the 140 recipient's natural-language presence status message, which will 141 be used in the response to the sender. 143 require ["extlists", "enotify", "variables", "vacation-seconds"]; 144 if allof ( 145 envelope :list "from" "tag:example.com,2009-05-28:AddrBook", 146 notify_method_capability "xmpp:me@example.com" "show" "xa" 147 ) { 148 # :matches "*" is used here to extract the value 149 if notify_method_capability :matches 150 "xmpp:myjid@example.com" "status" "*" { 151 set "resp_msg" "${1}"; 152 } else { 153 set "resp_msg" "Away for a while, without access to email."; 154 } 155 vacation :handle "ext-away" :seconds 1800 "${resp_msg}"; 156 } 158 2. In the next example, we'll check several lists or sublists, auto- 159 replying to everyone, but sending more detail about the 160 recipient's status to senders who are found in the recipient's 161 address book, and still more detail to those in the "family" and 162 "friends" lists. 164 require ["extlists", "enotify", "vacation-seconds"]; 166 if envelope :list "from" ["tag:example.com,2009-05-28:family", 167 "tag:example.com,2009-05-28:friends"] 168 { 169 if notify_method_capability "xmpp:me@example.com" "show" "away" 170 { 171 vacation :handle "away" :seconds 600 172 "I'm away for now, but I'll be back soon."; 173 } 174 elsif notify_method_capability "xmpp:me@example.com" "show" "dnd" 175 { 176 vacation :handle "dnd" :seconds 1800 177 "I'm not to be disturbed. I'll check mail later."; 178 } 179 elsif notify_method_capability "xmpp:me@example.com" "show" "xa" 180 { 181 vacation :handle "ext-away" :seconds 3600 182 "I'm away for a while, without access to email."; 183 } 184 elsif notify_method_capability "xmpp:me@example.com" "busy" "yes" 185 { 186 vacation :handle "busy" :seconds 1800 187 "I'm very busy, but might check email now and then."; 188 } 189 } 190 elsif envelope :list "from" "tag:example.com,2009-05-28:AddrBook" 191 { 192 if notify_method_capability "xmpp:me@example.com" "show" 193 ["away", "dnd", "xa"] 194 { 195 vacation :handle "away" :seconds 3600 196 "I'm not available to respond to email."; 197 } 198 } 199 else # the sender is not in the address book 200 { 201 vacation :handle "catchall" :days 1 202 "I got your message, and might read it eventually."; 203 } 205 3. For this example, if the sender is a work colleague and the 206 recipient is on extended away status, then reply with a message 207 giving alternative contact information. The message might also 208 include details about the reason for the absence, or other 209 personal or confidential information that shouldn't be shared 210 with senders who aren't associated with the recipient's company. 212 require ["extlists", "enotify", "vacation"]; 214 if envelope :list "from" "tag:example.com,2009-05-28:co-workers" 215 { 216 if notify_method_capability "xmpp:me@example.com" "show" "xa" 217 { 218 vacation :handle "bigtrip" :days 3 219 "I'm on an extended business trip to Texas for the Foo 220 project. Contact my backup, Susan , 221 or call my assistant on +1 666 555 1234 if you urgently 222 need to contact me."; 223 } 224 } 226 4. This example is used to send an acknowledgment to every message 227 received. A :seconds value of zero is used to reply to every 228 message, with no removal of duplicates to the same sender. This 229 requires that the Sieve engine allow an interval of zero; if it 230 does not, and it imposes a minimum value, not every message will 231 receive an auto-reply. 233 require ["extlists", "vacation-seconds"]; 235 if not envelope :list "from" "tag:example.com,2009-05-28:staff" 236 { 237 vacation :handle "auto-resp" :seconds 0 238 "Your request has been received. A service 239 representative will contact you as soon as 240 possible, usually within one business day."; 241 } 243 5. This example uses the same structure to automatically send a copy 244 of each incoming message to the recipient's backup, if the sender 245 is a customer contact or co-worker, or if the message's subject 246 includes the word "urgent". 248 require ["extlists", "enotify"]; 250 if anyof ( 251 envelope :list "from" ["tag:example.com,2009-05-28:customers", 252 "tag:example.com,2009-05-28:co-workers"], 253 header :contains "subject" "urgent" 254 ) { 255 if notify_method_capability "xmpp:me@example.com" "show" "xa" 256 { 257 redirect "susan@example.com"; # send a copy to my backup 258 keep; # also keep a copy for myself 259 } 260 } 261 } 263 4. Security Considerations 265 See the referenced specifications, below for discussion of security 266 considerations for Sieve scripts in general, and for each of the 267 extensions in particular. 269 This document describes how to set up a system that creates automatic 270 replies in an intelligent way. Despite the "intelligence", errors in 271 scripts can result in too many auto-reply messages, especially when 272 the reply interval is minimal (using the "notify" action, or the 273 "vacation" action with a small value for ":seconds"). 275 Despite the "intelligence", too, errors in scripts can result in 276 private information getting to senders inappropriately. In example 3 277 in Section 3, for instance, if the :list test checks the wrong list, 278 or none at all, information about the recipient's business trip might 279 be send to someone who has no need to know about it, and shouldn't. 281 Even without errors in scripts, a sender who recognizes that auto- 282 replies are dependent upon the recipient's presence can use that fact 283 to probe the presence information. One result of that can be that 284 the sender discerns changes in the recipient's presence that the 285 sender would normally not be allowed to see, making this an 286 unintentional back door into the user's presence information. 287 Another result is that this can create a "covert channel", allowing 288 the recipient to send information to a sender by changing his 289 presence information, his address book, and/or his Sieve script 290 (though in this regard, the exposure is comparable to any other case 291 of shared presence information). 293 Finally, users of any auto-reply mechanism should really think about 294 whether automatic replies are necessary, and at what interval they 295 make sense when they are. Email is not Instant Messaging, and 296 senders generally expect that replies might take a while. Consider 297 whether it's truly important to tell people that you'll read their 298 mail in an hour or so, or whether that can just be taken as how email 299 works. There are times when this makes sense, but let's not use it 300 to exacerbate information overload. 302 5. IANA Considerations 304 There are no IANA actions required by this document. 306 6. Normative References 308 [I-D.ietf-sieve-notify-presence] 309 George, R. and B. Leiba, "Sieve Notification Using 310 Presence Information", 311 draft-ietf-sieve-notify-presence-00 (work in progress), 312 June 2010. 314 [I-D.ietf-sieve-vacation-seconds] 315 George, R. and B. Leiba, "Sieve Vacation Extension: 316 "Seconds" parameter", draft-ietf-sieve-vacation-seconds-00 317 (work in progress), June 2010. 319 [I-D.ietf-sieve-external-lists] 320 Melnikov, A. and B. Leiba, "Sieve Extension: Externally 321 Stored Lists", draft-ietf-sieve-external-lists-02 (work in 322 progress), May 2010. 324 [RFC5228] Guenther, P. and T. Showalter, "Sieve: An Email Filtering 325 Language", RFC 5228, January 2008. 327 [RFC5229] Homme, K., "Sieve Email Filtering: Variables Extension", 328 RFC 5229, January 2008. 330 [RFC5230] Showalter, T. and N. Freed, "Sieve Email Filtering: 331 Vacation Extension", RFC 5230, January 2008. 333 [RFC5435] Melnikov, A., Leiba, B., Segmuller, W., and T. Martin, 334 "Sieve Email Filtering: Extension for Notifications", 335 RFC 5435, January 2009. 337 Authors' Addresses 339 Robins George 340 Huawei Technologies 341 Huawei Base, Bantian, Longgang District 342 Shenzhen, Guangdong 518129 343 P. R. China 345 Phone: +86-755-28788314 346 Email: robinsg@huawei.com 348 Barry Leiba 349 Huawei Technologies 351 Phone: +1 646 827 0648 352 Email: barryleiba@computer.org 353 URI: http://internetmessagingtechnology.org/ 355 Alexey Melnikov 356 Isode Limited 357 5 Castle Business Village, 36 Station Road 358 Hampton, Middlesex TW12 2BX 359 UK 361 Email: Alexey.Melnikov@isode.com 362 URI: http://www.melnikov.ca/