Internet Draft: Lemonade Notifications and Filters            S. H. Maes
                                                             R. Cromwell
                                                                  Oracle
Document: draft-ietf-lemonade-notifications-04.txt            R. Gellens
Expires: October 2007                                           Qualcomm
                                                             April, 2007


                   Lemonade Notifications and Filters


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
    http://www.ietf.org/ietf/1id-abstracts.txt The list of
    Internet-Draft Shadow Directories can be accessed at
    http://www.ietf.org/shadow.html.


Copyright Notice

    Copyright (C) The IETF Trust (2007).  All Rights Reserved.


Abstract

    This document discusses how to provide notification and filtering
    mechanisms to IMAP as part the Lemonade profile.

    This document also discusses the use of Lemonade notifications to
    implement server to server notifications.






Maes et al                 [Page 1]                 Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


Table of Contents

     1.  Conventions Used in this Document  . . . . . . . . . . . . .  2
     2.  Introduction  . . . . . . . . . . . . . . . . . . . . . . .   3
     3.  Objectives   . . . . . . . . . . . . . . . . . . . . . . . .  3
     4.  Notification logical architecture and LEMONADE Profile bis    4
     5.  Capability   . . . . . . . . . . . . . . . . . . . . . . . .  6
     6.  Event-based synchronization   . . . . . . . . . . . . . . .   6
     7.  Filters  . . . . . . . . . . . . . . . . . . . . . . . . . .  8
       7.1.  Next steps and future work  . . . . . . . . . . . . . .   9
     8.  Inband notification payload  . . . . . . . . . . . . . . . .  9
     9.  Outband Notification payload  . . . . . . . . . . . . . . .   9
       9.1.  Outband Notification Payload in Clear Text   . . . . . .  9
    10.  LEMONADE message store behavior   . . . . . . . . . . . . .  11
    11.  Provisioning and Preferences for Notification Settings   . . 11
      11.1.  Entry Names and Attributes  . . . . . . . . . . . . . .  12
      11.2.  Provision Entries  . . . . . . . . . . . . . . . . . . . 12
      11.3.  Preference Entries  . . . . . . . . . . . . . . . . . .  13
      11.4.  Getting and setting preference and provisioning annotati 14
    12.  Changing filters from the client  . . . . . . . . . . . . .  15
    13.  Out of scope items for IETF  . . . . . . . . . . . . . . . . 15
    14.  Server to server notifications considerations   . . . . . .  15
      14.1.  Scope of server to server notifications  . . . . . . . . 16
      14.2.  Basic Operation   . . . . . . . . . . . . . . . . . . .  17
      14.3.  Server to server terminology   . . . . . . . . . . . . . 18
      14.4.  Notification payloads   . . . . . . . . . . . . . . . .  18
      14.5.  Server to server notification protocol details   . . . . 19
        14.5.1.  Generic case  . . . . . . . . . . . . . . . . . . .  19
        14.5.2.  Abstracted notification protocol   . . . . . . . . . 20
        14.5.3.  Exception Handling  . . . . . . . . . . . . . . . .  20
      14.6.  Server to server complementary information   . . . . . . 21
      14.7.  Event orders  . . . . . . . . . . . . . . . . . . . . .  21
      14.8.  Reliability  . . . . . . . . . . . . . . . . . . . . . . 21
    15.  Security Considerations   . . . . . . . . . . . . . . . . .  21
    16.  Normative and Informative References . . . . . . . . . . . . 22
    17.  Future Work   . . . . . . . . . . . . . . . . . . . . . . .  23
    18.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . 24
    19.  Authors Addresses   . . . . . . . . . . . . . . . . . . . .  24
       Appendix A: Out-of-band SMS channel binding (INFORMATIVE appen 25
       Appendix B: Changes from Previous Versions  . . . . . . . . .  25
       Intellectual Property Statement  . . . . . . . . . . . . . . . 26
       Full Copyright Statement  . . . . . . . . . . . . . . . . . .  27


1.  Conventions Used in this Document






Maes et al                 [Page 2]                 Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


    In examples, "C:" and "S:" indicate lines sent by the client and
    server respectively.

    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
    document are to be interpreted as described in [RFC2119].

    An implementation is not compliant if it fails to satisfy one or
    more of the MUST or REQUIRED level requirements for the protocol(s)
    it implements.  An implementation that satisfies all the MUST or
    REQUIRED level and all the SHOULD level requirements for a protocol
    is said to be "unconditionally compliant" to that protocol; one that
    satisfies all the MUST level requirements but not all the SHOULD
    level requirements is said to be "conditionally compliant." When
    describing the general syntax, some definitions are omitted as they
    are defined in [RFC3501].


2.  Introduction

    As the work on LEMONADE Profile ([LEMONADEPROFILE] and
    [LEMONADEPROFILEBIS]) progresses, a need has been identified to
    provide notification and filtering mechanisms to IMAP4.

    The requirements for inband and outband server to client
    notifications are documented in [OMA-ME-RD].


3.  Objectives

    According to these analyses, there is a need to support:
    #    Mechanisms for event-based (server to client) synchronization:
    *       Defines the relationship between notification mechanisms and
    the IMAP4 protocol
    -          To minimize the latency observed for email events on the
    email server to be reflected in the email client.
    -         To avoid unnecessary polling and requests from the e-mail
              clients:
    .             To reduce the total amount of data to be exchanged
    between email server and client, e.g. by allowing the email client
    to select which messages to synchronize and how to synchronize.
    .            To reduce the amount of transactions.
    *       Needs to cope with possible lost or delayed notifications
    *      Support in-band (within IMAP band) and out-band notifications
           (Exchanged via other servers / enablers).
    -          Specified in ways that are network transport independent
    but may contain some bindings to particular notification channels
    (e.g.  SMS binary, WAP Push, SIP Notification, ...)
    -         When the email client is connected to the email server,


Maes et al                 [Page 3]                 Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


              only inband notifications is expected take place
    *       Defines notification payload for inband and outband
    mechanisms.
    #    Server-side filtering to decide which messages will be
    accessible by the email client.
    *       Filtering results into the following logical types:
    -          Type A:  Messages filtered out and not accessible by the
    email client (no notification, no header access, no access)
    -         Type B:  Messages that are accessible by the mobile e-mail
              enabler client but no outband notification takes place.
              Inband notification might however take place if email
              client is already connected to email server.
    -         Type C:  Messages that are accessible by the e-mail client
              for which notifications (outband or inband) are always
              sent to the email client.
    #    Notions of Filters:
    *       View filters:  Filters that determine which email messages
    are of type B and C or A
    *      Notification filters:  Filters that determine which email
           messages are of type C or B
    *      Event filters:  Filters that determines what events are to be
           notified to the client
    #    Mechanisms to allow the user to update the filters from the
    email client
    #   Mechanisms to allow configuration and exchange of settings
        between the client and the server in band or outband: - Server
        to client: e.g. server ID, account name, policies, … - Client to
        server: e.g. rules filters vacation notices, notification
        channel, ...

    The present document describes how this may be achieved within the
    scope of LEMONADE Profile [LEMONADEPROFILEBIS].


4.  Notification logical architecture and LEMONADE Profile bis

    The target logical architectures involving the LEMONADE Profile and
    notifications are discussed in [LEMONADEPROFILEBIS].













Maes et al                 [Page 4]                 Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


    Figure 1 illustrates how notification and filtering can be
    introduced in the context of LEMONADE profile bis.

                     +--------------+
                     |              |
           +---------| Notification |
           |         | Mechanism    |
           |         +----------^---+
           |Notif.              |
           |Protocol -------\  +|-+_
           |   ______|   +---\>|NF|----+
           |  |          |     +--+    |                +-----+
           v  |   IMAP   +--+_LEMONADE +---+  ESMTP  +--+     |
        +-----+<-------->|VF| IMAP     |DF |<--------|AF| MTA |
        | MUA |\   ME-2a +--+ Store    +-^-+         +--+     |
        |     | \        +-------------+ |              +-----+
        +-----+--\---------------|-------+
                  \              |URLAUTH
                   \SUBMIT       |
                    \       +----v-----+
                     \      |          |                +-----+
                      \     | LEMONADE |      ESMTP     |     |
                       ---->| Submit   |--------------->| MTA |
                   ME-2b    | Server   |                |     |
                            |          |                +-----+
                            +----------+

   Figure 1: Filtering mechanism defined in LEMONADE Profile bis
   architecture.

    In Figure 1, four categories of filters are defined:

    #    AF:  Administrative Filters - Set up by email service provider.
    AF are typically not configured by the user and set to apply
    policies content filtering, virus protection, spam filtering etc...
    #   DF:  Deposit Filters - Filters that are executed on deposit of
        new emails.  They can be defined as SIEVE filters [SIEVE].  They
        can include vacation notices.
    #   VF:  View Filters - Filters that define which emails are visible
        to the MUA.  View filters can be defined as virtual folders
        [VFOLDER] as described in later in this document.
    #   NF:  Notification Filters - Filters that define for what email
        server event an outband notification is sent to the client.

    The filters are manageable from the MUA:






Maes et al                 [Page 5]                 Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


    #    NF and DF: via SIEVE management protocol <Editor's note:  Still
    to be defined>. [IMAPSIEVE] provides an example of how notification
    filters (NF) may be expressed in SIEVE.
    #   VF: via VFOLDER as defined in [VFOLDER]


5.  Capability

    A server supporting Lemonade notifications MUST report the following
    set of capabilities:  IDLE, METADATA, LISTEXT, LNOTIFICATION,
    VFOLDER.

    METADATA (and by transitive dependency LISTEXT) are from the
    [ANNOTATEMORE] extension, used to store notification provisioning
    and preference information.

    VFOLDER declares support for [VFOLDER].

    LNOTIFICATION is currently a placeholder umbrella capability
    declares support for outband notification filters and filter
    management as described in this document, which may includes works
    in progress such as SIEVE notification filters and filter
    management.


6.  Event-based synchronization

    The addition of Server-to-client notifications transforms the
    LEMONADE profile into an event-based synchronization protocol.
    Whenever an event of the type [MSGEVENTS] occurs within the view, a
    notification can be generated. [MSGEVENTS] provides a list of
    possible events that could be notified (based on the filter
    settings).

    If the MUA is connected to the IMAP server, inband notifications are
    generated following IDLE [RFC2177].

    When the MUA is not connected, the Notification filter generates a
    outband notification.  The notification filter may be considered as
    acting on a PUSH repository.

    If the MUA is not connected, and outband notification is disabled,
    the client must perform a quick-sync on reconnect to determine
    mailbox changes.  If the MUA has only momentarily lost connection,
    it should also attempt to use [RECONNECT].






Maes et al                 [Page 6]                 Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


    Formally, a repository consists of a set of folders, and each folder
    has both a name and a set of messages associated with it.  The
    "complete repository" consists of all folders of an end user and all
    the associated messages for each of those folders.















































Maes et al                 [Page 7]                 Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


    This is illustrated in Figure 2.

   +----------------+        +---------------+            +------------+
   |    COMPLETE    |        |               |            |            |
   |                | (VF)   |   VIEW        |            |   PUSH     |
   |   REPOSITORY   | View   |  REPOSITORY   |Notification| REPOSITORY |
   | all the emails |Filters | emails to be  |  Filters   | important  |
   |in an end user's|========|on the mobile  |=====<?>====| emails /   |
   |                |        |               |      |     |  events    |
   | email account  |        |client(VFOLDER)|      |     |   (NF)     |
   +----------------+        +---------------+      |     +------------+
                                                    |            |
                                                  IDLE           |
                                                    |          Outband
                                                    |       Notification
                                                    |            |
                                                    V            V

               Figure 2:  Filters and Repositories

    In inband notification mode, the MUA issues IDLE, and notifications
    are sent as unsolicited responses to the MUA from the LEMONADE IMAP
    server.

    In outband notification mode, the outband notification may be a
    message (notification payload) and possibly a set of surrounding
    exchanges sent with an appropriate format to a particular IP address
    and port.  This may be the address of the MUA.  However, in general,
    it conforms to the interface of a notification server / mechanisms
    responsible for finalizing the format and sending the notification
    to the MUA on the client with the appropriate protocol.

    The following sections provide description of the outband
    notification payload format and mechanisms to check, set and
    notification settings.


7.  Filters

    [SIEVE] provides an email filtering language.

    [VFOLDER] describes how the View Filter (VF) can be implemented and
    modified from the MUA.  Alternative mechanisms for creating virtual
    mailbox views may be possible, however they should satisfy the
    requirement that an out-of-band notification may refer to them by
    name in order to tell the client which view an event occurred for.





Maes et al                 [Page 8]                 Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


    [SIEVENOTIFICATION] and [IMAPSIEVE] provides a mechanisms to
    associate notifications based on the [SIEVE] filter whenever
    messages are created or changed within a LEMONADE IMAP store.


7.1.  Next steps and future work

    [SIEVE] filters and [IMAPSIEVE] should be extended to support
    binding to all [MSGEVENTS].


8.  Inband notification payload

    Inband notification syntax follows the IDLE specifications
    [RFC2177].  However, which unsolicited responses are generated by
    each event is ambiguous in [RFC2177]. [IMAP-EVENTS] defines a more
    rigorous set of requirements for IDLE events, including how to
    monitor mailboxes when not in a selected state.

    In lieu of this, simpler MUAs MAY choose to interpret unsolicited
    responses in IDLE as a "wake up call" to perform a sync.
    [IMAP-DISC] is an informative reference for how to do this
    efficiently.


9.  Outband Notification payload


9.1.  Outband Notification Payload in Clear Text

    The outband notification payload is in general in clear text, unless
    the payload carries sensitive data.  Server to Client Notification
    and Filtering treats the notification as a signal to the client to
    fetch the information on the server that awaits it.

    The payload for wake-up notifications is the OMA EMN format, see
    [OMA-EN].  This notification, minimally, informs the client that
    some push event has happened on the server, so it must connect to
    fetch the information.

    Server to client notifications and filters treats the notification
    as a MUA wake up event to fetch the information on the server that
    awaits it.  The MUA MAY present other behaviors that exploit
    additional information provided in the notification.  However this
    is out of scope of the specifications.






Maes et al                 [Page 9]                 Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


    Wake-up events consists of the following payload (example): <emn
    mailbox="mailat:john.doe@somewhere.com"
    timestamp="OMA-EMN-dateformat"> </emn>

    The mailbox URI formats are defined in [OMN-EN].

    The notification payload is generated by NF and sent to an
    appropriate messaging interface, appropriately formatted for that
    interface.  The messaging mechanism is then responsible for sending
    the notification to the MUA.

    Example:  A new message arrives on the server and this is notified
    via out-of-band.
      S: pushes SMS with the following text:
         <emn
           mailbox="mailat:joe@foo.com"
           timestamp="2004-02-20T06:40:00Z">
         </emn>

    Here the notification payload is sent to an SMSC messaging
    interface, appropriately formatted for that interface.  The SMSC is
    responsible for sending the SMS to the MUA using [OMA-EMN] encoding.

    If EXTENDED notification format is supported by the MUA, a new
    extended EMN element is used which contains additional XML
    attributes.

    The format of this extended EMN element is:

   <!ATTLIST xemn
      mailbox     CDATA    #REQUIRED

      timestamp   CDATA    #IMPLIED

      event       CDATA    #IMPLIED   ;event name from [MSGEVENTS]
      view        CDATA    #IMPLIED   ;IMAP mailbox or view w/message
      sequence-id CDATA    #IMPLIED   ;notification sequence number
      event       CDATA    #IMPLIED   ;event name in [MSGEVENTS]
      uid         CDATA    #IMPLIED   ;message UID
      sender      CDATA    #IMPLIED   ;name of message sender
      datetime    CDATA    #IMPLIED   ;date message was sent
      subject     CDATA    #IMPLIED   ;subject of message
      >

    With the 'xemn' element's allowed children as

   <!ELEMENT xemn (#CDATA)>             ;CDATA contains optional snippet
                                         of body of message or any text
                                         to be displayed on MUA when


Maes et al                [Page 10]                Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


                                         viewing message prior to
                                         synchronization.

    Extended EMN payloads should be encrypted.

    Example extended payload:

      <xemn
           mailbox="mailat:joe@foo.com"



           view="INBOX"
           event="New Message"
           timestamp="2004-02-20T06:40:00Z"
           sender="Mike Smith &lt;mike@foo.com&gt;"
           datetime="Thu, 15 May 2006 19:51:21 -0700"
           sequence-id="1"
           uid="157"
           subject="Re: our meeting"
       >
          I can't make the 9:15 meeting, can we reschedule?
      </xemn>

    A client may treat an extended notification as a wakeup
    notification, or it may parse the payload and utilize the included
    data to synchronize new messages more efficiently.  Not all of the
    fields will have values, depending on the type of event.  The client
    may utilize the view and uid attributes to determine which IMAP
    mailbox the event occurred in, and for which message.  The view
    attribute may refer to an IMAP Mailbox, or a named virtual folder if
    implemented by the client.


10.  LEMONADE message store behavior

    Because outband notifications may be sent over unreliable channels
    (i.e., they may be lost or delayed), the server MUST keep track of
    the outband notifications that are sent via NF, until the MUA react
    to them.

    If a MUA does not react to outband notifications, the server MAY
    stop sending outband notifications, except possibly periodic wake up
    calls until the client reconnects.







Maes et al                [Page 11]                Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


11.  Provisioning and Preferences for Notification Settings

    It is sometimes necessary for the server to inform the client of
    default notification settings the first time the client is used, as
    well as notification capabilities of the server.  It is also
    necessary for the client to adjust notification preferences.
    [ANNOTATEMORE] is used to store provisioning and preference
    information.

    The difference between a provision entry and a preference entry is
    that provision entries are typically read-only, global to the user,
    and represent capabilities, whereas preference entries are writable
    by the client, and per-mailbox, and represent actual settings.

    A client only needs to access provision information once when the
    device uses the Lemonade server for the first time.  It MAY opt to
    not cache provisioning information, and re-read it on each
    connection, but it is not necessary.  Re-provisioning MAY also be
    initiated manually via user action, or via out-of-band notification.

    Provision and preference data marked "private" in [ANNOTATEMORE]
    terminology is also inherently per-device, not per-user.  Attributes
    marked "shared" are inherently per-user.  If a user logs in as his
    desktop client identity, "private" preference data is separate from
    his mobile phone identity, rather than shared.  However, "shared"
    preference data may be visible to all of his devices (but not other
    users)


11.1.  Entry Names and Attributes

    Entry names and Attributes listed in this section SHOULD be
    supported by any server claiming LNOTIFICATION compliance.  ABNF
    structure of attribute values is provided.


11.2.  Provision Entries

    The following are server-global provision entries.

   /notify/outband
     Defines attributes related to out-of-band notification.

     Attribute Names = Values:
        "channel.priv" = "NONE" *(SP ("SMS" / "MMS" / "SIP" / "XMPP" /
                         "UDP") = format)

                       ;a list of supported out-of-band channels
                       ;for the current device and their formats


Maes et al                [Page 12]                Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007



        format = "WAKEUP" / "EXTENDED"

        Example: "NONE SMS=WAKEUP MMS=EXTENDED SIP=EXTENDED
                  UDP=EXTENDED"

        "credential.priv" = string
                       ;the source address or identity of the server
                        sending the notifications, potentially with an
                        integrity check

   /notify/inband

     Defines attributes related to in-band notifications.

     Attribute Names = Values:
        "push.shared" = event-list
                    ;a space separated list of push event names
                     supported for in-band push. TBD in Lemonade events
                     / notification work.

   /notify/security

     Defines attributes related to negotiable security parameters for
   securing out of band event notification and proxied deployment
   models. TBD.


11.3.  Preference Entries

    The following are per-mailbox per-device preference entries.

   /notify/outband
      Defines attributes related to chosen preference for out-of-band
   notification.

   Attribute Names=Values:
      "channel.priv" = "NONE" / "SMS=" format / "MMS=" format /
                       "SIP=" format / "XMPP=" format / "UDP=" format
                        ;for a device capable of multiple mechanisms,
                        ;set this attribute to the desired mechanism


      format = "WAKEUP" / "EXTENDED"


      "address.priv" = string
                       ;the phone number, email address, or
                       ;destination endpoint for notifications


Maes et al                [Page 13]                Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


                       ;if different from server known device default
                       ;(e.g. device phone number, or device IP
                       ; address on well known open port, etc)


      "limit.priv" = "size=" nz-number  | "total=" nz-number
                       ;the maximum number of bytes to send in
                       ;notification payloads or the total number
                       ;of messages to send. Both per-day

   /notify/inband

      Defines attributes related to inband push events.

   Attribute Names=Values:
      "msgformat.priv" = fetch-att
                       ;RFC3501 fetch-att syntax detailing the format
                       ;of unsolicited FETCH responses generated in-band
                       ;for new message arrivals

      "push.priv"      = "push" / "pull"
                       ;specifies whether the client expects
                       ;new messages to be pushed via the unsolicited
                       ;FETCH response defined above, or via client
                       ;issued FETCH in response to an EXISTS response.

   /notify/event

      Defines attributes related to event / notification filtering.

      "filter.priv"  = "ALL" / "NEW" / "NONE"
                       ;specifies whether no events are pushed
                       ;NEW message events are pushed, or ALL
                       ;events are pushed


11.4.  Getting and setting preference and provisioning annotations

    To fetch a provision, a client should generate a GETANNOTATE command
    with no mailbox specified according to [ANNOTATEMORE]

    Example:  Discover all provision parameters

      C: a GETMETADATA /notify/* (channel credential push)
      S: * METADATA /notify/outband (channel.priv "SMS=WAKEUP NONE"
                                        credential.priv "55555"
                                        push.shared "new expunged")
      S: a OK GETMETADATA Complete



Maes et al                [Page 14]                Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


    Example:  Set out-of-band mechanism to "MMS" with EMN extended
    support

      C: a SETMETADATA "INBOX" /notify/outband (channel.priv
   "MMS=EXTENDED")
      S: a OK SETMETADATA complete


12.  Changing filters from the client

    VFOLDER also provides ways to update VF.

    NF Filter remote management mechanisms MAY rely on [MANAGESIEVE]


13.  Out of scope items for IETF

    OMA provides ways to perform provisioning via OMA client
    provisioning and device management.  Other provisioning
    specifications are available (e.g.  SMS based).

    OMA provides enablers to support outband notifications: the outband
    notification mechanisms.

    Also, OMA XDM may be considered also for outband filter changes.


14.  Server to server notifications considerations

    The following sections focus on considerations and usage of the
    Lemonade notifications for server to server notifications

    With server to server notifications, a messaging system (e.g. email
    server, voice mail system, etc.) submits alerts, which describe
    potential notification events, regarding an end user mailbox status
    change (e.g. new message has arrived, mailbox is full, etc.).

    These alerts are sent to a notification mechanisms, which may, in
    turn, generate an end user alert notification.

    Server to server notifications facilitate a solution where the
    messaging system initiates an end user notification, while allowing
    the messaging system, not to be familiar with the end user's
    notification preferences.

    The notification mechanisms are the entities which is familiar with
    the end user's notification preferences.




Maes et al                [Page 15]                Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


    Using server to server notifications, allow the messaging system to
    provide the end user, a unified notification experience (the same
    look and feel for all messaging systems' accounts), while allowing
    smooth integration of additional Messaging systems.


14.1.  Scope of server to server notifications

    The suite of Internet mail protocols (POP3, IMAP4) allows different
    mail clients to access and manipulate electronic mail messages on a
    messaging system.  These protocols, however, do not provide off-line
    methods by which an end user can be notified upon changes in the
    mailbox status.  Further, none of the mentioned protocols defines a
    way to aggregate the status within the end user's various mailboxes.

    To provide an end user with the ability of unified Notification and
    one centralized message-waiting indication (MWI), notification
    mechanisms are required to aggregate the information of all the
    events occurring on the end user's different messaging systems.

    With server to server notifications, a messaging system notifies the
    notification mechanisms regarding events occurring in an end user's
    mailbox.  It is important to emphasize, that server to server
    notifications do not deal with the communications between the
    notification mechanisms and the end user devices (SMS, WAP Push,
    MWI, etc.).

    For example, when an email message is deposited in an email server,
    the email server sends a "new message" notification to the
    notification service, which then notifies the end user by a Short
    Text Message (SMS).

    This process can be extended to include other mailbox events that
    are important to the end user, such as "mailbox full" and "message
    rejected" or any other mailbox status change.  Each notification
    should include additional information that is available to the end
    user such as the mailbox status, message attributes, etc.














Maes et al                [Page 16]                Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


    The figure 3 depicts the server to server notification scope:

              +--------+                                 +--------+
       New    |        |                                 |  SMS   |
      Message | Email  | \                               |Gateway |
     -------> |Server 1|  \                           _  |        |
              +--------+   \                          /| +--------+
                          ^ \                        /
                          |  \                      / ^
                          |   \ +--------------+   /  |  +--------+
              +--------+  |    _|+-------------|+ /   |  |  MWI   |
      Read    | Voice  |  |     ||              |/    |  |Gateway |
     Message  |  Mail  |-------->| Notification |------->|        |
     -------> | Server |  | ^ _ +|  Mechanisms  |\  ^ |  +--------+
              +--------+  | | /| +--------------- \ | |
                          | |/               \     \| |
                          | / ^               \   ^ \ |
                          |/| |                \  | |\|
              +--------+  / | |                 \ | | \  +--------+
      Mailbox |        | /| | |                  \| | |\ |  Wap   |
      Full    | Email  |/ | | |                 ^ \ | |_||  Push  |
     -------> |Server 2|  | | |                 | |\| |  |Gateway |
              +--------+  | | |                 | | \ |  +--------+
                          | | |                 | | |\|
                          | | |                 | | | \
                          | | |                 | | | |\
                          | | |                 | | | |_|+--------+
                          | | |                 | | | |  | IM     |
                          | | |                 | | | |  |Gateway |
                          | | |                 | | | |  |        |
                          | | |                 | | | |  +--------+
                          | | |                 | | | |
                        Server to                OTHER
                          Server               PROTOCOLS
                      Notifications

   Figure 3: Scope of server to server notifications

    The notification mechanisms can either provide an abstract
    notification mechanism able to convert notifications to an
    appropriate channel or expose the northbound interface (application
    interface) exposed by a specific notification channel.  In the
    latter case it may just be a logical concept and the sender of
    notifications may directly address the appropriate notification
    channels.  All the options are viable.






Maes et al                [Page 17]                Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


14.2.  Basic Operation

    The messaging system notifies the notification mechanisms (which in
    turn MAY notify an end user) about events that occurred in the end
    user's mailbox.  Each such notification, referring to a single
    mailbox event is referred to as a notification request.

    The notification request SHOULD contain data regarding the mailbox
    event which has occurred.  It's RECOMMENDED that the request would
    not contain data regarding the end user notification destinations.
    This would be left to the notification mechanisms’ implementation.
    If such data has been received the notification mechanisms MAY
    ignore it.


14.3.  Server to server terminology

    This specification uses the following terms:

    Message Waiting Indication (MWI):

       A mechanism that indicates to the end user that a message is
       waiting in a Messaging System

       Examples for such action are:  SMS message, WAP push message,
       Instant messaging notification, telephony stutter tone, etc.  MWI
       states may be ON or OFF.

       Notification Event:

       An event that may result in a notification to the end user or may
       change the MWI state (ON or OFF)

    Messaging System:

       A system that maintains a set of one or more mailboxes for end
       user's messages, for example: email servers, voicemail systems,
       etc.

    Notification Mechanisms:

       A system, which aggregates all notification events from multiple
       Messaging systems to multiple end user destinations.


14.4.  Notification payloads





Maes et al                [Page 18]                Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


    The cases of Figure 1 and Figure 3 are very similar.

    In both cases a message must be generated by the message store as
    result of a message event.  This message is communicated to the
    messaging mechanisms.

    Within the context of Lemonade profile (Figure 1), the event is
    filtered by NF and the payload of the notification is defined in
    section 8.

    In more generic cases, the server to server notification payload can
    be any message.  Certain may be defined to:
    #    Realize the messaging mecanisms’ task which has caused the
    notification event.  The task may be related to one of the
    following:
    *       New message Task
    -          New Message Deposit
    *       Mailbox Manipulation Task (e.g.  Login, Logout, etc.)
    -          Login to mailbox
    -         Logout from mailbox
    -         Read message
    -         Delete Message
    -         Purge Message
    *       Management Task (e.g.  Mailbox Full)
    -          Mailbox full
    -         Mailbox full cancellation

    The task's types list, as defined above, SHOULD be extendable.
    #    Provide a rich experience to the end user of the notification,
    without the need to actually retrieve the message.  This MAY include
    mailbox status, message attributes, etc.
    #   Practice different MWI behaviors (e.g. turn MWI indication off
        after all the messages in all the end user's mailboxes have been
        read).
    #   URL, as defined in [RFC-URL] or [URLAUTH], referring to the
        message which has caused the event, to the notification
        mecanisms (and eventually, to the end user).


14.5.  Server to server notification protocol details


14.5.1.  Generic case

    Within the more general case of server to server notification, the
    payload may be an arbitrary text or binary message.





Maes et al                [Page 19]                Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


    In both cases the interaction model is defined as:
    1   An event takes place in the message store
    2   The event is filtered.  As a result it may be hidden or result
        into a notification.
    3   The notification is a message in a particular payload that is
        prepared for the target notification mechanisms.
    4   The payload is complemented with the necessary information to
        tell the notification mechanism how and where to send the
        notification.
    5   The complemented payload is then formatted as required by the
        target notification mechanisms (i.e. the right format on the
        right port to be sent to the right address, possibly with an
        appropriate protocol binding – e.g.  HTTP PUT) plus the
        information about where / how to send the notification.  This
        last step is imposed by the notification mechanisms and must be
        known by the notification generating filter.

    Different interfaces and bindings may be used depending on the
    notification channel.


14.5.2.  Abstracted notification protocol

    When a mechanism is provided to abstractly notify a notification
    mechanism that is then responsible for notifying via the appropriate
    channel, the notification protocol MUST follow
    [NOTIFICATIONPROTOCOL].


14.5.3.  Exception Handling

    It is assumed that the interface exposed by the notification
    mechanisms can notify the messaging system about the outcome of the
    notification request (notification status message).  The
    notification mechanisms SHOULD notify the messaging system whenever
    a problem has occurred.

    If the request has failed, the response, when available, SHOULD be
    coherent enough to allow the messaging system to determine the cause
    of the failure.

    The notification mechanisms SHOULD make a distinction between events
    in which the content of the request has caused an error (request
    errors), and cases in which a non-source-related reason has caused
    the error.






Maes et al                [Page 20]                Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


    The Messaging system SHOULD parse the notification status message,
    when available, to decide its next actions (e.g. clear the messageËs
    content, recompile the message data, etc.).


14.6.  Server to server complementary information

    The server to server complementary information MUST include:
    *   Identify the end user whose inbox has generated the
        notification.
    *   Identify the end user or end target addresses or identifiers
        that should be informed about the notification event (not
        necessarily the same as the previous end user).
    *   Decide what kind of actions, the notification mechanisms should
        perform, due to the notification request.


14.7.  Event orders

    For lemonade profile bis, the event order is not important.

    For generic server to server notifications, the order may matter and
    the messaging system must provide the notifications in the order
    that they are generated by mailbox events.


14.8.  Reliability

    For Lemonade profile bis, lost or delayed notifications of the MUA
    are not critical.  A client can recover all missing events next time
    it connects to the server and the server MUST buffer the
    notifications and make them available to the MUA when it comes back
    to the server.

    For generic server to server notifications, it is assumed that the
    data in a notification request is important, and therefore a high
    level of reliability is needed.  In such cases it MUST be possible
    to provide acknowledgment by the target to the messaging system or
    to repeat notification until such an acknowledgement is provided if
    supported by the notification channel.  Alternatively it must be
    possible for the messaging system to request such repeats.


15.  Security Considerations

    Notifications must be secured (when useful information is sent) and
    integrity should be checkable.




Maes et al                [Page 21]                Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


    It should be possible to authenticate sender and prevent Denial of
    Service attack via notifications.


16.  Normative and Informative References
    [[ editor's note: split into two sections, update references ]]

    [ABNF] D. Crocker, et al. "Augmented BNF for Syntax Specifications:
    ABNF", RFC 2234, November 1997. http://www.ietf.org/rfc/rfc2234

    [ANNOTATEMORE] Daboo, C., "IMAP ANNOTATEMORE Extension", work in
    progress, draft-daboo-imap-annotatemore-xx, (work in progress).

    [GSM03.40] GSM 03.40 v7.4.0 Digital cellular telecommunications
    system (Phase 2+); Technical realization of the Short Message
    Service (SMS).  ETSI 2000

    [IMAP-DISC] Melnikov, A. "Synchronization operations for
    disconnected IMAP4 clients", draft-melnikov-imap-disc-06.txt,
    October 2004.

    [IMAP-EVENTS] Melnikov, A. " Lemonade Inband Notifications",
    draft-melnikov-lemonade-imap-events-00.txt, June 17, 2006

    [IMAPSIEVE] Leiba, B., "Support for Sieve in Internet Message Access
    Protocol (IMAP4)", draft-ietf-lemonade-imap-sieve-0x (work in
    progress).

    [LEMONADEPROFILE] Maes, S.H. and Melnikov A., "Lemonade Profile",
    draft-ietf-lemonade-profile-XX.txt, (work in progress).

    [LEMONADEPROFILEBIS] Maes, S.H., Melnikov A. and D. Cridland, "
    LEMONADE profile bis", draft-ietf-lemonade-profile-bis-xx.txt, (work
    in progress).

    [MANAGESIEVE] Martin, T. and A. Melnikov, "A Protocol for Remotely
    Managing Sieve Scripts", draft-martin-managesieve-xx.txt, (work in
    progress).

    [MSGEVENTS] Newman, C., "Internet Message Store Events", draft-
    newman-lemonade-msgevent-xx.txt, (work in progress).

    [NOTIFICATIONPROTOCOL] Maes, S.H., " Lemonade Notification protocol
    ", draft-ietf-lemonade-notification-protocol-xx.txt, (work in
    progress).






Maes et al                [Page 22]                Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


    [OMA-EN] Open Mobile Alliance Email Notification Version 1.0, August
    2002. http://www.openmobilealliance.org/tech/docs/EmailNot/OMA-
    Push-EMN-V1_0-20020830-C.pdf

    [OMA-ME-AD] Open Mobile Alliance Mobile Email Architecture Document,
    (Work in progress). http://www.openmobilealliance.org/

    [OMA-ME-RD] Open Mobile Alliance Mobile Email Requirement Document,
    (Work in progress). http://www.openmobilealliance.org/

    [P-IMAP] Maes, S.H., Lima R., Kuang, C., Cromwell, R., Ha, V. and
    Chiu, E., Day, J., Ahad R., Jeong W-H., Rosell G., Sini, J., Sohn S-
    M., Xiaohui F. and Lijun Z., "Push Extensions to the IMAP Protocol
    (P-IMAP)", draft-maes-lemonade-p-imap-xx.txt, (work in progress).

    [RECONNECT] A. Melnikov, C. Wilson, "IMAP4 Extensions for Quick
    Reconnect", draft-ietf-lemonade-reconnect-06.txt, May 2006

    [RFC2177] Leiba, B. "IMAP4 IDLE Command", RFC 2177, June 1997.
    http://www.ietf.org/rfc/rfc2177.

    [RFC3501] Crispin, M. "IMAP4, Internet Message Access Protocol
    Version 4 rev1", RFC 3501, March 2003.
    http://www.ietf.org/rfc/rfc3501

    [SIEVE] SIEVE WG, http://www.ietf.org/html.charters/sieve-
    charter.html

    [SIEVENOTIFICATIONS] Melnikov, A., "Sieve -- An extension for
    providing instant notifications", draft-ietf-sieve-notify-XX.txt,
    (work in progress)

    [URLAUTH] Crispin, M. and Newman, C., "Internet Message Access
    Protocol (IMAP) - URLAUTH Extension", draft-ietf-lemonade-urlauth-
    XX.txt, (work in progress).

    [VFOLDER] Maes, S. and et Al., "Persistent Search Extensions and
    Virtual Folder to the IMAP Protocol", draft-maes-lemonade-vfolder-
    0x, (work in progress).

    [WAPWDP] Wireless Datagram Protocol, Version 14-Jun-2001, Wireless
    Application Protocol WAP-259-WDP- 20010614-aWAP (WDP)


17.  Future Work






Maes et al                [Page 23]                Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


    [1] Complete the specification tasks and editor’s identified in this
    document:

    *    ^Detailed NF specifications (Sieve or no sieve)
    *   ^NF filter management protocol
    *   ^Create new MSGEVENTS draft to define mandatory event support,
        including new OMA required events like client LOCK_DOWN, or
        request the client to re-provision (including encryption keys)

    [2] Map MSGEVENTS to mandatory in-band responses

    [3] Determine whether CHECKPOINT style inband event queuing is
    needed when client is disconnected, or whether [RECONNECT] suffices
    (e.g. we may need a lemonade idle event draft)

    [4] Possibly update MSGEVENTS, keeping what is necessary, and adding
    new ones (e.g. we may need a lemonade event draft starting from
    [MSGEVENTS]).

    [5] Review and sanitize introduction of server to server
    notification and possibly better integrate with structure of the
    text.

    [6] Better relate and divide text between this draft and
    [NOTIFICATIONPROTOCOL]

    [7] Reflect decisions on discussions of support of notification of
    multiple devices per user.


18.  Acknowledgments

    The authors want to thank all who have contributed key insight in
    notifications and filtering and have authored specifications or
    drafts used in this document, including the original work on P-IMAP
    [P-IMAP].

    The authors want to thank the authors of the original work on Server
    To Server Notification Protocol Requirements (draft-ietf-lemonade-
    notify-s2s-00) whose material has been incorporated in the present
    document, in particular, Gev Decktor.


19.  Authors Addresses

   Stephane H. Maes
   Oracle Corporation
   500 Oracle Parkway
   M/S 4op634


Maes et al                [Page 24]                Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


   Redwood Shores, CA 94065
   USA
   Phone: +1-650-607-6296
   Email: stephane.maes@oracle.com

   Ray Cromwell
   Oracle Corporation
   500 Oracle Parkway
   Redwood Shores, CA 94065
   USA


Appendix A:  Out-of-band SMS channel binding (INFORMATIVE appendix)

    One method for delivering wake-up notifications is by pushing the
    notification payload as a binary SMS message.  Upon receiving an
    SMS, a client would then parse the payload, determine if it is a
    email notification or some other SMS message, and process the
    message appropriately.

    This has the unfortunate side effect of forcing the client to parse
    every message trying to sense what kind of message it is.  The
    proposed mechanism to fix this is to utilize the binary

    SMS User Data Header (UDH) to specify a destination port, according
    to the Application Port

    Addressing Scheme in [GSM03.40] or alternatively, on CDMA networks,
    to use the WAP WDP mapping to GSM SMS [WAPWDP].

    Although any port number is usable, it might make sense to use port
    143 for consistency, which is the IANA IMAP port.  Thus, OMA EMN or
    extended format notifications should be sent to port 143 via GSM SMS
    or WAP WDP.  The client upon receiving the SMS will check the port
    number, and if the port is the right port, the message will be
    routed to the appropriate client application for processing.

    Because such mechanisms are network specific, a server should
    determine if a port specific SMS or WAP WDP mapping can be used
    based on knowledge of the device / network or on strategies that
    determine if the device reacts to such notifications.  However, a
    client may also declare it / selecting the out-of-band notification
    channel as GSMSMS or WAPWDP as for any other notification channel.


Appendix B:  Changes from Previous Versions





Maes et al                [Page 25]                Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


    THIS SECTION TO BE REMOVED PRIOR TO PUBLICATION.

    version -04:
    *   Update dates, slight reformatting, add editor's note for
        References

    version -03:
    *   Updated examples to use new METADATA syntax
    *   Drop CLEARIDLE and reference A. Melnikov's [IMAP-EVENTS]
    *   XEMN notification format extended to with event and view
        attributes
    *   View filter is a work in progress.  Several proposals are being
        discussed, so the draft has been revised to try and capture high
        level requirements (e.g. out of band notifications must be able
        to identify which view an event occurred for)
    *   Added notification protocol details and reference

    version -02:
    *   LPROVISION/LGETPREFS/LSETPREFS removed in favor of mailbox
        annotations
    *   Updated inband notification section to include discussion of
        [CLEARIDLE] and [MSGEVENTS]
    *   EMN payload clarified for both wakeup and extended formats.
    *   Some reference clean-up
    *   Add server to server notifications based on the expired draft
        draft-ietf-lemonade-notify-s2s-00.

    version -01:
    *   Move SMS / WAP examples to an informative appendix.
    *   Restrict the exchange of keys via LPROVISION to secure
        exchanges.
    *   Differentiate ANNOTATE from LPROVISION on that basis.

    versin -00:
    *   Initial release


Intellectual Property Statement

    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.




Maes et al                [Page 26]                Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


    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.


Full Copyright Statement

    Copyright (C) The IETF Trust (2007).

    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 Statement

    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.








Maes et al                [Page 27]                Expires October 2007

Internet Draft       Lemonade Notifications and Filters       April 2007


    Maes Expires – December 2006 [Page 24]


    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.

    Disclaimer of Validity

    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 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.

    Copyright Statement

    Copyright (C) The Internet Society (2006).  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.

    Acknowledgement

    Funding for the RFC Editor function is currently provided by the
    Internet Society.






    Maes Expires – December 2006 [Page 25]


Maes et al                [Page 28]                Expires October 2007