draft-ietf-sieve-notify-xmpp-09.txt   rfc5437.txt 
Sieve Working Group P. Saint-Andre Network Working Group P. Saint-Andre
Internet-Draft XMPP Standards Foundation Request for Comments: 5437 Cisco
Intended status: Standards Track A. Melnikov Category: Standards Track A. Melnikov
Expires: August 22, 2008 Isode Limited Isode Limited
February 19, 2008 January 2009
Sieve Notification Mechanism: xmpp
draft-ietf-sieve-notify-xmpp-09
Status of this Memo
By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at Sieve Notification Mechanism:
http://www.ietf.org/ietf/1id-abstracts.txt. Extensible Messaging and Presence Protocol (XMPP)
The list of Internet-Draft Shadow Directories can be accessed at Status of This Memo
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on August 22, 2008. This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice Copyright Notice
Copyright (C) The IETF Trust (2008). Copyright (c) 2009 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (http://trustee.ietf.org/
license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights
and restrictions with respect to this document.
Abstract Abstract
This document describes a profile of the Sieve extension for This document describes a profile of the Sieve extension for
notifications, to allow notifications to be sent over the Extensible notifications, to allow notifications to be sent over the Extensible
Messaging and Presence Protocol (XMPP), also known as Jabber. Messaging and Presence Protocol (XMPP), also known as Jabber.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction ....................................................3
1.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Overview ...................................................3
1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 1.2. Terminology ................................................3
2. Definition . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Definition ......................................................3
2.1. Notify parameter "method" . . . . . . . . . . . . . . . . 3 2.1. Notify Parameter "method" ..................................3
2.2. Test notify_method_capability . . . . . . . . . . . . . . 3 2.2. Test notify_method_capability ..............................3
2.3. Notify tag ":from" . . . . . . . . . . . . . . . . . . . . 4 2.3. Notify Tag ":from" .........................................4
2.4. Notify tag ":importance" . . . . . . . . . . . . . . . . . 4 2.4. Notify Tag ":importance" ...................................4
2.5. Notify tag ":message" . . . . . . . . . . . . . . . . . . 4 2.5. Notify Tag ":message" ......................................4
2.6. Notify tag ":options" . . . . . . . . . . . . . . . . . . 4 2.6. Notify Tag ":options" ......................................4
2.7. XMPP syntax . . . . . . . . . . . . . . . . . . . . . . . 4 2.7. XMPP Syntax ................................................4
3. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3. Examples ........................................................6
3.1. Basic action . . . . . . . . . . . . . . . . . . . . . . . 6 3.1. Basic Action ...............................................6
3.2. Action with body . . . . . . . . . . . . . . . . . . . . . 6 3.2. Action with "body" .........................................7
3.3. Action with body, importance, message, and subject . . . . 7 3.3. Action with "body", ":importance", ":message", and
3.4. Action with from, message, importance, body, and "subject" ..................................................7
subject . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.4. Action with ":from", ":message", ":importance",
4. Requirements Conformance . . . . . . . . . . . . . . . . . . . 9 "body", and "subject" ......................................8
5. Internationalization Considerations . . . . . . . . . . . . . 10 4. Requirements Conformance ........................................9
6. Security Considerations . . . . . . . . . . . . . . . . . . . 11 5. Internationalization Considerations ............................10
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 6. Security Considerations ........................................11
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 12 7. IANA Considerations ............................................12
8.1. Normative References . . . . . . . . . . . . . . . . . . . 12 8. References .....................................................12
8.2. Informative References . . . . . . . . . . . . . . . . . . 13 8.1. Normative References ......................................12
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 14 8.2. Informative References ....................................13
Intellectual Property and Copyright Statements . . . . . . . . . . 15
1. Introduction 1. Introduction
1.1. Overview 1.1. Overview
The [NOTIFY] extension to the [SIEVE] mail filtering language is a The [NOTIFY] extension to the [SIEVE] mail filtering language is a
framework for providing notifications by employing URIs to specify framework for providing notifications by employing URIs to specify
the notification mechanism. This document defines how xmpp URIs (see the notification mechanism. This document defines how xmpp URIs (see
[XMPP-URI]) are used to generate notifications via the Extensible [XMPP-URI]) are used to generate notifications via the Extensible
Messaging and Presence Protocol [XMPP], which is widely implemented Messaging and Presence Protocol [XMPP], which is widely implemented
in Jabber instant messaging technologies. in Jabber instant messaging technologies.
1.2. Terminology 1.2. Terminology
This document inherits terminology from [NOTIFY], [SIEVE], and This document inherits terminology from [NOTIFY], [SIEVE], and
[XMPP]. [XMPP]. In particular, the terms "parameter" and "tag" are used as
described in [NOTIFY] to refer to aspects of Sieve scripts, and the
term "key" is used as described in [XMPP-URI] to refer to aspects of
an XMPP URI.
The capitalized key words "MUST", "MUST NOT", "REQUIRED", "SHALL", The capitalized key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
"SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT
RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
interpreted as described in [TERMS]. interpreted as described in [TERMS].
2. Definition 2. Definition
2.1. Notify parameter "method" 2.1. Notify Parameter "method"
The "method" parameter MUST be a URI that conforms to the xmpp URI The "method" parameter MUST be a URI that conforms to the xmpp URI
scheme (as specified in [XMPP-URI]) and that identifies an XMPP scheme (as specified in [XMPP-URI]) and that identifies an XMPP
account associated with the email inbox. The URI MAY include the account associated with the email inbox. The URI MAY include the
resource identifier of an XMPP address and/or the query component resource identifier of an XMPP address and/or the query component
portion of an XMPP URI, but SHOULD NOT include an authority component portion of an XMPP URI, but SHOULD NOT include an authority component
or fragment identifier component. The processing application MUST or fragment identifier component. The processing application MUST
extract an XMPP address from the URI in accordance with the extract an XMPP address from the URI in accordance with the
processing rules specified in [XMPP-URI]. The resulting XMPP address processing rules specified in [XMPP-URI]. The resulting XMPP address
MUST be encapsulated in XMPP syntax as the value of the XMPP 'to' MUST be encapsulated in XMPP syntax as the value of the XMPP 'to'
attribute. attribute.
2.2. Test notify_method_capability 2.2. Test notify_method_capability
In response to a notify_method_capability test for the "online" In response to a notify_method_capability test for the "online"
notification-capability, an implementation SHOULD return a value of notification-capability, an implementation SHOULD return a value of
"yes" if it has knowledge of an active presence session (see "yes" if it has knowledge of an active presence session (see
[XMPP-IM]) for the specified XMPP notification-uri; otherwise it [XMPP-IM]) for the specified XMPP notification-uri; otherwise, it
SHOULD return a value of "maybe" (since typical XMPP systems may not SHOULD return a value of "maybe" (since typical XMPP systems may not
allow a Sieve engine to gain knowledge about the presence of XMPP allow a Sieve engine to gain knowledge about the presence of XMPP
entities). entities).
2.3. Notify tag ":from" 2.3. Notify Tag ":from"
If included, the ":from" tag MUST be an electronic address that If included, the ":from" tag MUST be an electronic address that
conforms to the "Mailbox" rule defined in [RFC2821]. The value of conforms to the "Mailbox" rule defined in [RFC5321]. The value of
the ":from" tag MAY be included in the human-readable XML character the ":from" tag MAY be included in the human-readable XML character
data of the XMPP notification; alternatively or in addition, it MAY data of the XMPP notification; alternatively or in addition, it MAY
be transformed into formal XMPP syntax, in which case it MUST be be transformed into formal XMPP syntax, in which case it MUST be
encapsulated as the value of an XMPP Stanza Headers and Internet encapsulated as the value of an XMPP SHIM (Stanza Headers and
Metadata [SHIM] header named "Resent-From". Internet Metadata) [SHIM] header named "Resent-From".
2.4. Notify tag ":importance" 2.4. Notify Tag ":importance"
The ":importance" tag has no special meaning for this notification The ":importance" tag has no special meaning for this notification
mechanism, and this specification puts no restriction on its use. mechanism, and this specification puts no restriction on its use.
The value of the ":importance" tag MAY be transformed into XMPP The value of the ":importance" tag MAY be transformed into XMPP
syntax (in addition to or instead of including appropriate text in syntax (in addition to or instead of including appropriate text in
the XML character data of the XMPP <body/> element); if so, it SHOULD the XML character data of the XMPP <body/> element); if so, it SHOULD
be encapsulated as the value of an XMPP Stanza Headers and Internet be encapsulated as the value of an XMPP SHIM (Stanza Headers and
Metadata [SHIM] header named "Urgency", where the XML character of Internet Metadata) [SHIM] header named "Urgency", where the XML
that header is "high" if the value of the ":importance" tag is "1", character of that header is "high" if the value of the ":importance"
"medium" if the value of the ":importance" tag is "2", and "low" if tag is "1", "medium" if the value of the ":importance" tag is "2",
the value of the ":importance" tag is "3". and "low" if the value of the ":importance" tag is "3".
2.5. Notify tag ":message" 2.5. Notify Tag ":message"
If the ":message" tag is included, that string MUST be transformed If the ":message" tag is included, that string MUST be transformed
into the XML character data of an XMPP <body/> element (where the into the XML character data of an XMPP <body/> element (where the
string is generated according to the guidelines specified in Section string is generated according to the guidelines specified in Section
3.6 of [NOTIFY]). 3.6 of [NOTIFY]).
2.6. Notify tag ":options" 2.6. Notify Tag ":options"
The ":options" tag has no special meaning for this notification The ":options" tag has no special meaning for this notification
mechanism. Any handling of this tag is the responsibility of an mechanism. Any handling of this tag is the responsibility of an
implementation. implementation.
2.7. XMPP syntax 2.7. XMPP Syntax
The xmpp mechanism results in the sending of an XMPP message to The xmpp mechanism results in the sending of an XMPP message to
notify a recipient about an email message. The general XMPP syntax notify a recipient about an email message. The general XMPP syntax
is as follows: is as follows:
o The notification MUST be an XMPP <message/> stanza. o The notification MUST be an XMPP <message/> stanza.
o The value of the XMPP 'from' attribute SHOULD be the XMPP address o The value of the XMPP 'from' attribute SHOULD be the XMPP address
of the notification service associated with the Sieve engine or of the notification service associated with the Sieve engine or
the XMPP address of the entity to be notified. The value of the the XMPP address of the entity to be notified. The value of the
XMPP 'from' attribute MUST NOT be generated from the Sieve ":from" XMPP 'from' attribute MUST NOT be generated from the Sieve ":from"
tag. tag.
o The value of the XMPP 'to' attribute MUST be the XMPP address o The value of the XMPP 'to' attribute MUST be the XMPP address
specified in the XMPP URI contained in the "method" notify specified in the XMPP URI contained in the "method" notify
parameter. parameter.
o The value of the XMPP 'type' attribute MUST be 'headline' or o The value of the XMPP 'type' attribute MUST be 'headline' or
'normal'. 'normal'.
o The XMPP <message/> stanza MUST include a <body/> child element. o The XMPP <message/> stanza MUST include a <body/> child element.
If the ":message" tag is included in the Sieve script, that string If the ":message" tag is included in the Sieve script, that string
MUST be used as the XML character data of the <body/> element. If MUST be used as the XML character data of the <body/> element. If
not and if the XMPP URI contained in the "method" notify parameter not and if the XMPP URI contained in the "method" notify parameter
specified a "body" parameter in the query component, that value specified a "body" key in the query component, that value SHOULD
SHOULD be used. Otherwise the XML character data SHOULD be some be used. Otherwise, the XML character data SHOULD be some
configurable text indicating that the message is a Sieve configurable text indicating that the message is a Sieve
notification. notification.
o The XMPP <message/> stanza MAY include a <subject/> child element. o The XMPP <message/> stanza MAY include a <subject/> child element.
If the XMPP URI contained in the "method" notify parameter If the XMPP URI contained in the "method" notify parameter
specified a "subject" parameter in the query component, that value specified a "subject" key in the query component, that value
SHOULD be used as the XML character data of the <subject/> SHOULD be used as the XML character data of the <subject/>
element. Otherwise the XML character data SHOULD be some element. Otherwise, the XML character data SHOULD be some
configurable text indicating that the message is a Sieve configurable text indicating that the message is a Sieve
notification. notification.
o The XMPP <message/> stanza SHOULD include a URI for the recipient
o The XMPP <message/> stanza SHOULD include a URI, for the recipient
to use as a hint in locating the message, encapsulated as the XML to use as a hint in locating the message, encapsulated as the XML
character data of a <url/> child element of an <x/> element character data of a <url/> child element of an <x/> element
qualified by the 'jabber:x:oob' namespace as specified in [OOB]. qualified by the 'jabber:x:oob' namespace, as specified in [OOB].
If included, the URI SHOULD be an Internet Message Access Protocol If included, the URI SHOULD be an Internet Message Access Protocol
[IMAP] URL that specifies the location of the message as defined [IMAP] URL that specifies the location of the message, as defined
in [IMAP-URL], but MAY be another URI type that can specify or in [IMAP-URL], but MAY be another URI type that can specify or
hint at the location of an email message, such as a URI for an hint at the location of an email message, such as a URI for an
HTTP resource [HTTP] or a POP3 mailbox [POP-URL] at which the HTTP resource [HTTP] or a Post Office Protocol Version 3 (POP3)
message can be accessed. It is not expected that an XMPP user mailbox [POP-URL] at which the message can be accessed. It is not
agent shall directly handle such a URI, but instead that it shall expected that an XMPP user agent shall directly handle such a URI,
invoke an appropriate helper application to handle the URI. but instead that it shall invoke an appropriate helper application
o The XMPP <message/> stanza MAY include an XMPP Stanza Headers and to handle the URI.
Internet Metadata [SHIM] header named "Resent-From". If the Sieve
script included a ":from" tag, the "Resent-From" value MUST be the o The XMPP <message/> stanza MAY include an XMPP SHIM (Stanza
value of the ":from" tag; otherwise the "Resent-From" value SHOULD Headers and Internet Metadata) [SHIM] header named "Resent-From".
be the envelope recipient address of the original email message If the Sieve script included a ":from" tag, the "Resent-From"
that triggered the notification. value MUST be the value of the ":from" tag; otherwise, the
"Resent-From" value SHOULD be the envelope recipient address of
the original email message that triggered the notification.
3. Examples 3. Examples
In the following examples, the sender of the email has an address of In the following examples, the sender of the email has an address of
<mailto:juliet@example.org>, the entity to be notified has an email <mailto:juliet@example.org>, the entity to be notified has an email
address of <mailto:romeo@example.com> and an XMPP address of address of <mailto:romeo@example.com> and an XMPP address of
romeo@im.example.com (resulting in an XMPP URI of romeo@im.example.com (resulting in an XMPP URI of
<xmpp:romeo@im.example.com>), and the notification service associated <xmpp:romeo@im.example.com>), and the notification service associated
with the Sieve engine has an XMPP address of notify.example.com. with the Sieve engine has an XMPP address of notify.example.com.
Note: In the following examples, line breaks are included in XMPP Note: In the following examples, line breaks are included in XMPP
URIs solely for the purpose of readability. URIs solely for the purpose of readability.
3.1. Basic action 3.1. Basic Action
The following is a basic Sieve notify action with only a method. The The following is a basic Sieve notify action with only a method. The
XML character data of the XMPP <body/> and <subject/> elements are XML character data of the XMPP <body/> and <subject/> elements are
therefore generated by the Sieve engine based on configuration. In therefore generated by the Sieve engine based on configuration. In
addition, the Sieve engine includes a URI pointing to the message. addition, the Sieve engine includes a URI pointing to the message.
Basic action (Sieve syntax) Basic action (Sieve syntax)
notify "xmpp:romeo@im.example.com" notify "xmpp:romeo@im.example.com"
The resulting XMPP <message/> stanza might be as follows. The resulting XMPP <message/> stanza might be as follows:
Basic action (XMPP syntax) Basic action (XMPP syntax)
<message from='notify.example.com' <message from='notify.example.com'
to='romeo@im.example.com' to='romeo@im.example.com'
type='headline' type='headline'
xml:lang='en'> xml:lang='en'>
<subject>SIEVE</subject> <subject>SIEVE</subject>
<body>&lt;juliet@example.com&gt; You got mail.</body> <body>&lt;juliet@example.com&gt; You got mail.</body>
<x xmlns='jabber:x:oob'> <x xmlns='jabber:x:oob'>
<url> <url>
imap://romeo@example.com/INBOX;UIDVALIDITY=385759043/;UID=18 imap://romeo@example.com/INBOX;UIDVALIDITY=385759043/;UID=18
</url> </url>
</x> </x>
</message> </message>
3.2. Action with body 3.2. Action with "body"
The following action contains a "body" parameter in the query The following action contains a "body" key in the query component of
component of the XMPP URI but no ":message" tag in the Sieve script. the XMPP URI but no ":message" tag in the Sieve script. As a result,
As a result, the XML character data of the XMPP <body/> element in the XML character data of the XMPP <body/> element in the XMPP
the XMPP notification is taken from the XMPP URI. In addition, the notification is taken from the XMPP URI. In addition, the Sieve
Sieve engine includes a URI pointing to the message. engine includes a URI pointing to the message.
Action with body (Sieve syntax) Action with "body" (Sieve syntax)
notify "xmpp:romeo@im.example.com?message notify "xmpp:romeo@im.example.com?message
;body=Wherefore%20art%20thou%3F" ;body=Wherefore%20art%20thou%3F"
The resulting XMPP <message/> stanza might be as follows. The resulting XMPP <message/> stanza might be as follows.
Action with body (XMPP syntax) Action with "body" (XMPP syntax)
<message from='notify.example.com' <message from='notify.example.com'
to='romeo@im.example.com' to='romeo@im.example.com'
type='headline' type='headline'
xml:lang='en'> xml:lang='en'>
<subject>SIEVE</subject> <subject>SIEVE</subject>
<body>Wherefore art thou?</body> <body>Wherefore art thou?</body>
<x xmlns='jabber:x:oob'> <x xmlns='jabber:x:oob'>
<url> <url>
imap://romeo@example.com/INBOX;UIDVALIDITY=385759044/;UID=19 imap://romeo@example.com/INBOX;UIDVALIDITY=385759044/;UID=19
</url> </url>
</x> </x>
</message> </message>
3.3. Action with body, importance, message, and subject 3.3. Action with "body", ":importance", ":message", and "subject"
The following action specifies an ":importance" tag and a ":message" The following action specifies an ":importance" tag and a ":message"
tag in the Sieve script, as well as a "body" parameter and a tag in the Sieve script, as well as a "body" key and a "subject" key
"subject" parameter in the query component of the XMPP URI. As a in the query component of the XMPP URI. As a result, the ":message"
result, the ":message" tag from the Sieve script overrides the "body" tag from the Sieve script overrides the "body" key from the XMPP URI
parameter from the XMPP URI when generating the XML character data of when generating the XML character data of the XMPP <body/> element.
the XMPP <body/> element. In addition, the Sieve engine includes a In addition, the Sieve engine includes a URI pointing to the message.
URI pointing to the message.
Action with body, importance, message, and subject (Sieve syntax) Action with "body", ":importance", ":message", and "subject" (Sieve
syntax)
notify :importance "1" notify :importance "1"
:message "Contact Juliet immediately!" :message "Contact Juliet immediately!"
"xmpp:romeo@im.example.com?message "xmpp:romeo@im.example.com?message
;body=You%27re%20in%20trouble ;body=You%27re%20in%20trouble
;subject=ALERT%21" ;subject=ALERT%21"
The resulting XMPP <message/> stanza might be as follows. The resulting XMPP <message/> stanza might be as follows.
Action with body, importance, message, and subject (XMPP syntax) Action with "body", ":importance", ":message", and "subject" (XMPP
syntax)
<message from='notify.example.com' <message from='notify.example.com'
to='romeo@im.example.com' to='romeo@im.example.com'
type='headline' type='headline'
xml:lang='en'> xml:lang='en'>
<subject>ALERT!</subject> <subject>ALERT!</subject>
<body>Contact Juliet immediately!</body> <body>Contact Juliet immediately!</body>
<headers xmlns='http://jabber.org/protocol/shim'> <headers xmlns='http://jabber.org/protocol/shim'>
<header name='Urgency'>high</header> <header name='Urgency'>high</header>
</headers> </headers>
<x xmlns='jabber:x:oob'> <x xmlns='jabber:x:oob'>
<url> <url>
imap://romeo@example.com/INBOX;UIDVALIDITY=385759045/;UID=20 imap://romeo@example.com/INBOX;UIDVALIDITY=385759045/;UID=20
</url> </url>
</x> </x>
</message> </message>
3.4. Action with from, message, importance, body, and subject 3.4. Action with ":from", ":message", ":importance", "body", and
"subject"
The following action specifies a ":from" tag, an ":importance" tag, The following action specifies a ":from" tag, an ":importance" tag,
and a ":message" tag in the Sieve script, as well as a "body" and a ":message" tag in the Sieve script, as well as a "body" key and
parameter and a "subject" parameter in the query component of the a "subject" key in the query component of the XMPP URI. As a result,
XMPP URI. As a result, the ":message" tag from the Sieve script the ":message" tag from the Sieve script overrides the "body" key
overrides the "body" parameter from the XMPP URI when generating the from the XMPP URI when generating the XML character data of the XMPP
XML character data of the XMPP <body/> element. In addition, the <body/> element. In addition, the Sieve engine includes a URI
Sieve engine includes a URI pointing to the message, as well as an pointing to the message, as well as an XMPP SHIM (Stanza Headers and
XMPP Stanza Headers and Internet Metadata [SHIM] header named Internet Metadata) [SHIM] header named "Resent-From" (which
"Resent-From" (which encapsulates the value of the ":from" tag). encapsulates the value of the ":from" tag).
Action with body, from, importance, message, and subject (Sieve Action with ":from", ":importance", ":message", "body", and "subject"
syntax) (Sieve syntax)
notify :from "romeo.my.romeo@example.com" notify :from "romeo.my.romeo@example.com"
:importance "1" :importance "1"
:message "Contact Juliet immediately!" :message "Contact Juliet immediately!"
"xmpp:romeo@im.example.com?message "xmpp:romeo@im.example.com?message
;body=You%27re%20in%20trouble ;body=You%27re%20in%20trouble
;subject=ALERT%21" ;subject=ALERT%21"
The resulting XMPP <message/> stanza might be as follows. The resulting XMPP <message/> stanza might be as follows.
Action with body, from, importance, message, and subject (XMPP Action with ":from", ":importance", ":message", "body", and "subject"
syntax) (XMPP syntax)
<message from='notify.example.com' <message from='notify.example.com'
to='romeo@im.example.com' to='romeo@im.example.com'
type='headline' type='headline'
xml:lang='en'> xml:lang='en'>
<subject>ALERT!</subject> <subject>ALERT!</subject>
<body>Contact Juliet immediately!</body> <body>Contact Juliet immediately!</body>
<headers xmlns='http://jabber.org/protocol/shim'> <headers xmlns='http://jabber.org/protocol/shim'>
<header name='Resent-From'>romeo.my.romeo@example.com</header> <header name='Resent-From'>romeo.my.romeo@example.com</header>
<header name='Urgency'>high</header> <header name='Urgency'>high</header>
skipping to change at page 9, line 37 skipping to change at page 9, line 37
Section 3.8 of [NOTIFY] specifies a set of requirements for Sieve Section 3.8 of [NOTIFY] specifies a set of requirements for Sieve
notification methods. The conformance of the xmpp notification notification methods. The conformance of the xmpp notification
mechanism is provided here. mechanism is provided here.
1. An implementation of the xmpp notification method SHOULD NOT 1. An implementation of the xmpp notification method SHOULD NOT
modify the final notification text (e.g., to limit the length); modify the final notification text (e.g., to limit the length);
however, a given deployment MAY do so (e.g., if recipients pay however, a given deployment MAY do so (e.g., if recipients pay
per character or byte for XMPP messages). Modification of per character or byte for XMPP messages). Modification of
characters themselves should not be necessary, since XMPP characters themselves should not be necessary, since XMPP
character data is encoded in [UTF-8]. character data is encoded in [UTF-8].
2. An implementation MAY ignore parameters specified in the 2. An implementation MAY ignore parameters specified in the
":from", ":importance", and ":options" tags. ":from", ":importance", and ":options" tags.
3. There is no recommended default message for an implementation to 3. There is no recommended default message for an implementation to
include if the ":message" argument is not specified. include if the ":message" tag is not specified.
4. A notification sent via the xmpp notification method MAY include 4. A notification sent via the xmpp notification method MAY include
a timestamp in the textual message. a timestamp in the textual message.
5. The value of the XMPP 'from' attribute MUST be the XMPP address 5. The value of the XMPP 'from' attribute MUST be the XMPP address
of the notification service associated with the Sieve engine. of the notification service associated with the Sieve engine.
The value of the Sieve ":from" tag MAY be transformed into the The value of the Sieve ":from" tag MAY be transformed into the
value of an XMPP Stanza Headers and Internet Metadata [SHIM] value of an XMPP SHIM (Stanza Headers and Internet Metadata)
header named "Reply-To". [SHIM] header named "Resent-From".
6. The value of the XMPP 'to' attribute MUST be the XMPP address 6. The value of the XMPP 'to' attribute MUST be the XMPP address
specified in the XMPP URI contained in the "method" parameter. specified in the XMPP URI contained in the "method" parameter.
7. In accordance with [XMPP-URI], an implementation MUST ignore any 7. In accordance with [XMPP-URI], an implementation MUST ignore any
URI action or parameter it does not understand (i.e., the URI URI action or key it does not understand (i.e., the URI MUST be
MUST be processed as if the action or parameter were not processed as if the action or key were not present). It is
present). It is RECOMMENDED to support the XMPP "message" query RECOMMENDED to support the XMPP "message" query type (see
type (see [QUERIES]) and the associated "body" and "subject" [QUERIES]) and the associated "body" and "subject" keys, which
parameters, which parameters SHOULD be mapped to the XMPP SHOULD be mapped to the XMPP <body/> and <subject/> child
<body/> and <subject/> child elements of the XMPP <message/> elements of the XMPP <message/> stanza, respectively. However,
stanza, respectively. However, if included then the Sieve if included, then the Sieve notify ":message" tag MUST be mapped
notify ":message" parameter MUST be mapped to the XMPP <body/> to the XMPP <body/> element, overriding the "body" key (if any)
element, overriding the "body" parameter (if any) included in included in the XMPP URI.
the XMPP URI.
8. An implementation MUST NOT include any other extraneous 8. An implementation MUST NOT include any other extraneous
information not specified in parameters to the notify action. information not specified in parameters to the notify action.
9. In response to a notify_method_capability test for the "online" 9. In response to a notify_method_capability test for the "online"
notification-capability, an implementation SHOULD return a value notification-capability, an implementation SHOULD return a value
of "yes" if it has knowledge of an active presence session (see of "yes" if it has knowledge of an active presence session (see
[XMPP-IM]) for the specified XMPP notification-uri but only if [XMPP-IM]) for the specified XMPP notification-uri, but only if
the entity that requested the test is authorized to know the the entity that requested the test is authorized to know the
presence of the associated XMPP entity (e.g., via explicit presence of the associated XMPP entity (e.g., via explicit
presence subscription as specified in [XMPP-IM]); otherwise it presence subscription as specified in [XMPP-IM]); otherwise, it
SHOULD return a value of "maybe" (since typical XMPP systems may SHOULD return a value of "maybe" (since typical XMPP systems may
not allow a Sieve engine to gain knowledge about the presence of not allow a Sieve engine to gain knowledge about the presence of
XMPP entities). XMPP entities).
10. An implementation SHOULD NOT attempt to retry delivery of a 10. An implementation SHOULD NOT attempt to retry delivery of a
notification if it receives an XMPP error of type "auth" or notification if it receives an XMPP error of type "auth" or
"cancel", MAY attempt to retry delivery if it receives an XMPP "cancel", MAY attempt to retry delivery if it receives an XMPP
error of type "wait", and MAY attempt to retry delivery if it error of type "wait", and MAY attempt to retry delivery if it
receives an XMPP error of "modify" but only if it makes receives an XMPP error of "modify", but only if it makes
appropriate modifications to the notification (see [XMPP]); in appropriate modifications to the notification (see [XMPP]); in
any case the number of retries SHOULD be limited to a any case, the number of retries SHOULD be limited to a
configurable number no less than 3 and no more than 10. An configurable number no less than 3 and no more than 10. An
implementation MAY throttle notifications if the number of implementation MAY throttle notifications if the number of
notifications within a given time period becomes excessive notifications within a given time period becomes excessive
according to local service policy. Duplicate suppression (if according to local service policy. Duplicate suppression (if
any) is a matter of implementation and is not specified herein. any) is a matter of implementation and is not specified herein.
5. Internationalization Considerations 5. Internationalization Considerations
Although an XMPP address may contain nearly any [UNICODE] character, Although an XMPP address may contain nearly any [UNICODE] character,
the value of the "method" parameter MUST be a Uniform Resource the value of the "method" parameter MUST be a Uniform Resource
skipping to change at page 11, line 17 skipping to change at page 11, line 20
Depending on the information included, sending a notification can be Depending on the information included, sending a notification can be
comparable to forwarding mail to the notification recipient. Care comparable to forwarding mail to the notification recipient. Care
must be taken when forwarding mail automatically, to ensure that must be taken when forwarding mail automatically, to ensure that
confidential information is not sent into an insecure environment. confidential information is not sent into an insecure environment.
In particular, implementations MUST conform to the security In particular, implementations MUST conform to the security
considerations given in [NOTIFY], [SIEVE], and [XMPP]. considerations given in [NOTIFY], [SIEVE], and [XMPP].
[NOTIFY] specifies that a notification method MUST provide mechanisms [NOTIFY] specifies that a notification method MUST provide mechanisms
for avoiding notification loops. One type of notification loop can for avoiding notification loops. One type of notification loop can
be caused by message forwarding; however, such loops are prevented be caused by message forwarding; however, such loops are prevented
because XMPP does not support forwarding of messages from one XMPP because XMPP does not support the forwarding of messages from one
address to another. Another type of notification loop can be caused XMPP address to another. Another type of notification loop can be
by auto-replies to XMPP messages received by the XMPP notification caused by auto-replies to XMPP messages received by the XMPP
service associated with the Sieve engine; therefore such a service notification service associated with the Sieve engine; therefore,
MUST NOT auto-reply to XMPP messages it receives. such a service MUST NOT auto-reply to XMPP messages it receives.
A common use case might be for a user to create a script that enables A common use case might be for a user to create a script that enables
the Sieve engine to act differently if the user is currently the Sieve engine to act differently if the user is currently
available at a particular type of service (e.g., send notifications available at a particular type of service (e.g., send notifications
to the user's XMPP address if the user has an active session at an to the user's XMPP address if the user has an active session at an
XMPP service). Whether the user is currently available can be XMPP service). Whether the user is currently available can be
determined by means of a notify_method_capability test for the determined by means of a notify_method_capability test for the
"online" notification-capability. In XMPP, information about current "online" notification-capability. In XMPP, information about current
network availability is called "presence" (see also [MODEL]). Since network availability is called "presence" (see also [MODEL]). Since
[XMPP-IM] requires that a user must approve a presence subscription [XMPP-IM] requires that a user must approve a presence subscription
skipping to change at page 11, line 43 skipping to change at page 11, line 46
a limited but reasonably safe implementation might be for the Sieve a limited but reasonably safe implementation might be for the Sieve
engine to request a subscription to the user's presence. The user engine to request a subscription to the user's presence. The user
would then need to approve that subscription request so that the would then need to approve that subscription request so that the
Sieve engine can act appropriately depending on whether the user is Sieve engine can act appropriately depending on whether the user is
online or offline. However, the Sieve engine MUST NOT use the user's online or offline. However, the Sieve engine MUST NOT use the user's
presence information when processing scripts on behalf of a script presence information when processing scripts on behalf of a script
owner other than the user, unless the Sieve engine has explicit owner other than the user, unless the Sieve engine has explicit
knowledge (e.g., via integration with an XMPP server's presence knowledge (e.g., via integration with an XMPP server's presence
authorization rules) that the script owner is authorized to know the authorization rules) that the script owner is authorized to know the
user's presence. While it would be possible to design a more user's presence. While it would be possible to design a more
advanced approach to delegation of presence authorization, any such advanced approach to the delegation of presence authorization, any
approach is left to future standards work. such approach is left to future standards work.
7. IANA Considerations 7. IANA Considerations
The following template provides the IANA registration of the Sieve The following template provides the IANA registration of the Sieve
notification mechanism specified in this document: notification mechanism specified in this document:
To: iana@iana.org To: iana@iana.org
Subject: Registration of new Sieve notification mechanism Subject: Registration of new Sieve notification mechanism
Mechanism name: xmpp Mechanism name: xmpp
Mechanism URI: draft-saintandre-rfc4622bis Mechanism URI: RFC 5122 [XMPP-URI]
Mechanism-specific options: none Mechanism-specific options: none
Standards Track/IESG-approved experimental RFC number: this RFC Permanent and readily available reference: RFC 5437
Person and email address to contact for further information: Person and email address to contact for further information:
Peter Saint-Andre <stpeter@jabber.org> Peter Saint-Andre <registrar@xmpp.org>
This information should be added to the list of Sieve notification This information has been added to the list of Sieve notification
mechanisms maintained at mechanisms maintained at <http://www.iana.org>.
<http://www.iana.org/assignments/sieve-notification>.
8. References 8. References
8.1. Normative References 8.1. Normative References
[NOTIFY] Melnikov, A., Leiba, B., Segmuller, W., and T. Martin, [NOTIFY] Melnikov, A., Ed., Leiba, B., Ed., Segmuller, W., and T.
"Sieve Email Filtering: Notifications", Martin, "Sieve Email Filtering: Extension for
draft-ietf-sieve-notify-12 (work in progress), Notifications", RFC 5435, January 2009.
December 2007.
[OOB] Saint-Andre, P., "Out of Band Data", XSF XEP 0066, [OOB] Saint-Andre, P., "Out of Band Data", XSF XEP 0066,
August 2006. August 2006.
[QUERIES] Saint-Andre, P., "XMPP URI Scheme Query Components", XSF [QUERIES] Saint-Andre, P., "XMPP URI Scheme Query Components", XSF
XEP 0147, September 2006. XEP 0147, September 2006.
[RFC2821] Klensin, J., "Simple Mail Transfer Protocol", RFC 2821, [RFC5321] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321,
April 2001. October 2008.
[SHIM] Saint-Andre, P. and J. Hildebrand, "Stanza Headers and [SHIM] Saint-Andre, P. and J. Hildebrand, "Stanza Headers and
Internet Metadata", XSF XEP 0131, July 2006. Internet Metadata", XSF XEP 0131, July 2006.
[SIEVE] Showalter, T. and P. Guenther, "Sieve: An Email Filtering [SIEVE] Guenther, P., Ed. and T. Showalter, Ed., "Sieve: An Email
Language", draft-ietf-sieve-3028bis-13 (work in progress), Filtering Language", RFC 5228, January 2008.
October 2007.
[TERMS] Bradner, S., "Key words for use in RFCs to Indicate [TERMS] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[XMPP-URI] [XMPP-URI] Saint-Andre, P., "Internationalized Resource Identifiers
Saint-Andre, P., "Internationalized Resource Identifiers
(IRIs) and Uniform Resource Identifiers (URIs) for the (IRIs) and Uniform Resource Identifiers (URIs) for the
Extensible Messaging and Presence Protocol (XMPP)", Extensible Messaging and Presence Protocol (XMPP)",
draft-saintandre-rfc4622bis-01 (work in progress), RFC 5122, February 2008.
June 2007.
8.2. Informative References 8.2. Informative References
[HTTP] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., [HTTP] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
[IMAP] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION [IMAP] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION
4rev1", RFC 3501, March 2003. 4rev1", RFC 3501, March 2003.
[IMAP-URL] [IMAP-URL] Melnikov, A. and C. Newman, "IMAP URL Scheme", RFC 5092,
Melnikov, A. and C. Newman, "IMAP URL Scheme", RFC 5092,
November 2007. November 2007.
[IRI] Duerst, M. and M. Suignard, "Internationalized Resource
Identifiers (IRIs)", RFC 3987, January 2005.
[MODEL] Day, M., Rosenberg, J., and H. Sugano, "A Model for [MODEL] Day, M., Rosenberg, J., and H. Sugano, "A Model for
Presence and Instant Messaging", RFC 2778, February 2000. Presence and Instant Messaging", RFC 2778, February 2000.
[POP-URL] Gellens, R., "POP URL Scheme", RFC 2384, August 1998. [POP-URL] Gellens, R., "POP URL Scheme", RFC 2384, August 1998.
[IRI] Duerst, M. and M. Suignard, "Internationalized Resource
Identifiers (IRIs)", RFC 3987, January 2005.
[UNICODE] The Unicode Consortium, "The Unicode Standard, Version [UNICODE] The Unicode Consortium, "The Unicode Standard, Version
3.2.0", 2000. 3.2.0", 2000.
The Unicode Standard, Version 3.2.0 is defined by The The Unicode Standard, Version 3.2.0 is defined by The
Unicode Standard, Version 3.0 (Reading, MA, Addison- Unicode Standard, Version 3.0 (Reading, MA, Addison-
Wesley, 2000. ISBN 0-201-61633-5), as amended by the Wesley, 2000. ISBN 0-201-61633-5), as amended by the
Unicode Standard Annex #27: Unicode 3.1 Unicode Standard Annex #27: Unicode 3.1
(http://www.unicode.org/reports/tr27/) and by the Unicode (http://www.unicode.org/reports/tr27/) and by the Unicode
Standard Annex #28: Unicode 3.2 Standard Annex #28: Unicode 3.2
(http://www.unicode.org/reports/tr28/). (http://www.unicode.org/reports/tr28/).
skipping to change at page 14, line 8 skipping to change at page 14, line 8
[XMPP] Saint-Andre, P., "Extensible Messaging and Presence [XMPP] Saint-Andre, P., "Extensible Messaging and Presence
Protocol (XMPP): Core", RFC 3920, October 2004. Protocol (XMPP): Core", RFC 3920, October 2004.
[XMPP-IM] Saint-Andre, P., "Extensible Messaging and Presence [XMPP-IM] Saint-Andre, P., "Extensible Messaging and Presence
Protocol (XMPP): Instant Messaging and Presence", Protocol (XMPP): Instant Messaging and Presence",
RFC 3921, October 2004. RFC 3921, October 2004.
Authors' Addresses Authors' Addresses
Peter Saint-Andre Peter Saint-Andre
XMPP Standards Foundation Cisco
Email: stpeter@jabber.org EMail: psaintan@cisco.com
URI: https://stpeter.im/
Alexey Melnikov Alexey Melnikov
Isode Limited Isode Limited
Email: Alexey.Melnikov@isode.com EMail: Alexey.Melnikov@isode.com
Full Copyright Statement
Copyright (C) The IETF Trust (2008).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Acknowledgment
Funding for the RFC Editor function is provided by the IETF
Administrative Support Activity (IASA).
 End of changes. 72 change blocks. 
174 lines changed or deleted 174 lines changed or added

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