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