-
Notifications
You must be signed in to change notification settings - Fork 0
/
draft-murchison-sieve-snooze.xml
416 lines (359 loc) · 15.5 KB
/
draft-murchison-sieve-snooze.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!DOCTYPE rfc SYSTEM 'rfc2629.dtd'
[
<!ENTITY rfc2119 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml'>
<!ENTITY rfc2045 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2045.xml'>
<!ENTITY rfc2046 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2046.xml'>
<!ENTITY rfc2047 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2047.xml'>
<!ENTITY rfc2231 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2231.xml'>
<!ENTITY rfc3501 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3501.xml'>
<!ENTITY rfc5228 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5228.xml'>
<!ENTITY rfc5230 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5230.xml'>
<!ENTITY rfc5232 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5232.xml'>
<!ENTITY rfc5234 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5234.xml'>
<!ENTITY rfc5260 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5260.xml'>
<!ENTITY rfc5321 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5321.xml'>
<!ENTITY rfc5322 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5322.xml'>
<!ENTITY rfc5429 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5429.xml'>
<!ENTITY rfc5435 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5435.xml'>
<!ENTITY rfc5436 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5436.xml'>
<!ENTITY rfc5437 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5437.xml'>
<!ENTITY rfc5490 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5490.xml'>
<!ENTITY rfc6131 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6131.xml'>
<!ENTITY rfc7942 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7942.xml'>
<!ENTITY rfc8174 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml'>
<!ENTITY rfc8579 PUBLIC ''
'http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8579.xml'>
<!ENTITY mailboxid PUBLIC ''
'http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.gondwana-sieve-mailboxid.xml'>
]>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes"?>
<?rfc strict="yes"?>
<rfc category="std" ipr='trust200902'
docName='draft-murchison-sieve-snooze-00'>
<front>
<title abbrev="Sieve Snooze">Sieve Email Filtering: Snooze Extension</title>
<author initials="K." surname="Murchison" fullname="Kenneth Murchison">
<organization abbrev="Fastmail">Fastmail US LLC</organization>
<address>
<postal>
<street>1429 Walnut Street - Suite 1201</street>
<city>Philadelphia</city> <region>PA</region>
<code>19102</code> <country>USA</country>
</postal>
<email>[email protected]</email>
</address>
</author>
<author initials="R." surname="Signes" fullname="Ricardo Signes">
<organization abbrev="Fastmail">Fastmail US LLC</organization>
<address>
<postal>
<street>1429 Walnut Street - Suite 1201</street>
<city>Philadelphia</city> <region>PA</region>
<code>19102</code> <country>USA</country>
</postal>
<email>[email protected]</email>
</address>
</author>
<author initials="N." surname="Jenkins" fullname="Neil Jenkins">
<organization abbrev="Fastmail">Fastmail Pty Ltd</organization>
<address>
<postal>
<street>Level 2, 114 William Street</street>
<city>Melbourne</city> <region>VIC</region>
<code>3000</code> <country>Australia</country>
</postal>
<email>[email protected]</email>
</address>
</author>
<date />
<area>ART</area>
<workgroup>Independent Submission</workgroup>
<keyword>Sieve</keyword>
<abstract>
<t>This document describes the "snooze" extension to the Sieve email
filtering language.
The "snooze" extension gives Sieve the ability to postpone the
filing of an incoming into a target mailbox until a later point
in time.</t>
</abstract>
<note title="Open Issues">
<t>
<list style="symbols">
<t>Should we define a new "tzid" environment item for use
with the environment extension to obtain the time zone in
which the interpreter is running?</t>
<t>Should we allow :specialuse to be used with snooze? </t>
<t>Should we allow :create to be used with snooze? </t>
<t>What to do, if anything, about quotas?
Do we verify that the user is under quota at the time of
snoozing and ignore quota when awakening?</t>
</list>
</t>
</note>
</front>
<middle>
<section title='Introduction'>
<t>Users are not always ready, willing, or able to read and
respond to email messages at the time of their arrival.
Sometimes it is desirable to have messages appear in a mailbox
at a more convenient time for the user to act upon them.</t>
<t>This document defines a new Sieve action command "snooze"
that postpones filing a message into a target mailbox until a
later point in time.
The capability string associated with this extension is
"snooze".</t>
</section>
<section title='Conventions Used in This Document'>
<t>Conventions for notations are as in Section 1.1 of <xref
target='RFC5228'/>, including use of the "Usage:" label for the
definition of action and tagged arguments syntax.</t>
<t>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
<xref target='RFC2119' /> <xref target='RFC8174' />
when, and only when, they appear in all capitals, as shown
here.</t>
</section> <!-- Intro -->
<section title='Snooze Action' anchor='snooze'>
<figure>
<artwork><![CDATA[
Usage: snooze [":mailbox" string]
[":addflags" string-list] [":removeflags" string-list]
[":weekdays" string-list]
[":tzid" string] <times: string-list>
]]></artwork>
</figure>
<t>The snooze action...
</t>
<section title='Mailbox Argument' anchor='mailbox'>
<t>The optional :mailbox argument is used to specify the
mailbox that the message will be filed into when it is awakened.
It is equivalent to the mailbox argument of the fileinto
action (see Section 4.1 of <xref target='RFC5228' />.</t>
<t>If :mailbox is omitted, or if the specified mailbox doesn't
exist at the time of awakening, the message will be filed
into the user's main mailbox.
For instance, in an implementation where the IMAP server is
running scripts on behalf of the user at time of delivery the
awakened message would be filed into into the user's
"INBOX".</t>
</section>
<section title='AddFlags and RemoveFlags Arguments'
anchor='flags'>
<t>The optional :addflags and :removeflags arguments are used
to specify which <xref target='RFC3501'>IMAP</xref> flags
should be added to and/or removed from the set of IMAP flags
present on the snoozed message at the time of awakening.</t>
<t>The general requirements for flag handling specified in
Section 2 of <xref target='RFC5232' /> MUST be followed.</t>
</section>
<section title='Weekdays Argument' anchor='weekdays'>
<t>The optional :weekdays argument specifies the set of days
on which the specified set of awakening times apply.
Each day of the week is expressed as an integer between
"0" and "6". "0" is Sunday, "1" is Monday, etc.
This syntax matches that of the "weekday" date-part argument
to the date test extension (see Section 4.2 of
<xref target='RFC5260' />).</t>
<t>If :weekdays is omitted, the set of awakening times applies
to every day of the week.</t>
</section>
<section title='Times and TZID Arguments' anchor='times'>
<t>The required times argument, along with the optional
:weekdays and :tzid arguments, are used to specify when a
snoozed message will be awakened.
Each time is specified in "hh:mm:ss" format and is interpreted
as the local time in the time zone specified by the :tzid
argument.</t>
<t>The value of the :tzid argument MUST be a time zone
identifier from the
<xref target='tzdb'>IANA Time Zone Database</xref>.
If :tzid is omitted, the time zone of the Sieve
interpreter is used.
</t>
<t>The combination of the weekdays and times form a
chronological list of awaken times. When a message is
snoozed, it is assigned the nearest future awaken in the
list. If a message is snoozed on a day with no awaken times,
or after the last awaken time on a given day,
the first awaken time on the next available day is used.
</t>
<figure>
<preamble>Example:</preamble>
<artwork><![CDATA[
require ["snooze"];
snooze :weekdays ["1", "3", "5", "2", "4"]
:tzid "Australia/Melbourne" ["12:00:00", "08:00:00", "16:00:00"];
]]></artwork>
</figure>
<t><list style='symbols'>
<t>A message snoozed at Thu, 18 Jun 2020 00:00:00 UTC would be
awakened at Thu, 18 Jun 2020 12:00:00 local time in Melbourne.</t>
<t>A message snoozed at Thu, 18 Jun 2020 04:00:00 UTC would be
awakened at Thu, 18 Jun 2020 16:00:00 local time in Melbourne.</t>
<t>A message snoozed at Thu, 18 Jun 2020 08:00:00 UTC would be
awakened at Fri, 19 Jun 2020 08:00:00 local time in Melbourne.</t>
<t>A message snoozed at Fri, 19 Jun 2020 12:00:00 UTC would be
awakened at Mon, 22 Jun 2020 08:00:00 local time in Melbourne.</t>
</list></t>
</section>
<section title='Interaction with the Imap4flags Extension'
anchor='imap4flags'>
<t>TODO: Discuss using <xref target='RFC5232'>
setflag/addflag/removeflag</xref> actions if
flags are to be set on the message when snoozing.</t>
</section>
<section title='Interaction with the MailboxID Extension'
anchor='mailboxid'>
<t>TODO: Discuss using
<xref target='I-D.gondwana-sieve-mailboxid'>:mailboxid</xref>
rather than :mailbox.</t>
</section>
</section> <!-- snooze -->
<section title='Mechanics of Snoozing Messages' anchor='snoozing'>
<t>TODO: Stipulate that the process of snoozing is implementation
specific and outside the scope of this document. Possible methods:
<list style='symbols'>
<t>File message into to "snoozed" mailbox and then move to target
mailbox at specifed time.</t>
<t>Queue message for SMTP future delivery (need to worry about
snooze loops).</t>
</list>
</t>
</section> <!-- snoozing -->
<section title="Implementation Status" anchor="impl">
<t>< RFC Editor: before publication please remove this section
and the reference to <xref target="RFC7942"/> ></t>
<t>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 <xref target="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.</t>
<t>According to <xref target="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".</t>
<section title="Cyrus Server" anchor="cyrus" toc="exclude">
<t>The open source <eref
target="http://www.cyrusimap.org/">Cyrus Server</eref> project
is a highly scalable enterprise mail system which supports
Sieve email filtering at the point of final delivery. This
production level Sieve implementation supports all of the
requirements described in this document. This implementation
is freely distributable under a BSD style license from
<eref target="http://www.cmu.edu/computing/">
Computing Services at Carnegie Mellon University</eref>.</t>
</section>
</section> <!-- Implementations -->
<section title='Security Considerations' anchor='security'>
<t>In addition to the security considerations in
<xref target='RFC5228'/> it should be noted that:
<list style='symbols'>
<t>TODO: Discuss potentially going over quota before re-delivery.</t>
<t>TODO: Discuss preventing snooze-loops if awakened messages are
processed by Sieve.</t>
</list>
</t>
</section>
<section title='Privacy Considerations' anchor='privacy'>
<t>This extension introduces no privacy considerations beyond
those in <xref target='RFC5228'/>.</t>
</section>
<section title='IANA Considerations'>
<section title="Registration of Sieve Extension">
<t>
<list style='empty'>
<t>To: [email protected]</t>
<t>Subject: Registration of new Sieve extension</t>
<t>Capability name: snooze</t>
<t>Description: Adds the "snooze" action command to
postpone filing a message into a target mailbox until a
later point in time.</t>
<t>RFC number: RFC XXXX</t>
<t>Contact address: The Sieve discussion list
<[email protected]></t>
</list>
</t>
</section>
</section> <!-- IANA -->
<!--
<section title='Acknowledgments'>
<t>The authors would like to thank the following individuals for
contributing their ideas and support for writing this
specification: .</t>
</section>
-->
</middle>
<back>
<references title='Normative References'>
&rfc2119;
&rfc3501;
&rfc5228;
&rfc5232;
&rfc8174;
&mailboxid;
<reference anchor='tzdb'
target="https://www.iana.org/time-zones">
<front>
<title>Time Zone Database</title>
<author>
<organization>Internet Assigned Numbers Authority</organization>
</author>
<date />
</front>
</reference>
</references>
<references title='Informative References'>
&rfc5260;
&rfc7942;
</references>
<!--
<section title="Change History (To be removed by RFC Editor before
publication)">
<t>Changes since draft-murchison-sieve-snooze-00:
<list style='symbols'>
</list>
</t>
</section>
-->
</back>
</rfc>