Internet DRAFT - draft-sabarish-immp
draft-sabarish-immp
Network Working Group Sabarish Ramanathan
Internet Draft: Internet Message Mapping Protocol Sabari Illam
Document: internet-drafts/draft-sabarish-immp-01.txt May 2005
IMMP -- Internet Message Mapping Protocol
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.
By submitting this Internet-Draft, I accept the provisions of
Section 3 of RFC 3667 (BCP 78).
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.
The protocol discussed in this document is experimental and subject
to change. Persons planning on either implementing or using this
protocol are STRONGLY URGED to get in touch with the author before
embarking on such a project.
Copyright Notice
Copyright (C) The Internet Society (2005). All Rights Reserved.
Sabarish [Page 1] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
Abstract
The Internet Message Mapping Protocol (IMMP) is designed to support
the provision of mail in a medium to large scale operation. It is
intended to be used as a companion to the SMTP protocol and mail
receiving protocols (POP, IMAP, web mail also), providing services
which are outside the scope of mail access. The services that IMMP
provides are mapping mails into appropriate subinbox (inside the
inbox) when the messages are received through SMTP, Extended inbox
management and Spam guard management.
Table of Contents
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1 Scope . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Conventions Used in this Document . . . . . . . . . . . . 3
1.3 Abbreviations . . . . . . . . . . . . . . . . . . . . . . 3
2 Protocol Overview . . . . . . . . . . . . . . . . . . . . . 4
2.1 Link Level . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 IMMP Model . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.1 Client Server Model . . . . . . . . . . . . . . . . . 4
2.2.2 IMMP with SMTP model . . . . . . . . . . . . . . . . . 4
2.3 Commands and Responses. . . . . . . . . . . . . . . . . . 5
2.3.1 Client Protocol Sender and Server Protocol Receiver . 6
2.3.2 Server Protocol Sender and Client Protocol Receiver . 7
3 State and Flow Diagram . . . . . . . . . . . . . . . . . . . 7
3.1 Non-Authenticated State . . . . . . . . . . . . . . . . . 8
3.2 Authenticated State . . . . . . . . . . . . . . . . . . . 8
3.3 Logout State . . . . . . . .. . . . . . . . . . . . . . . 8
3.4 Anonymous State . . . . . . . . . . . . . . . . . . . . 8
4 Data Formats . . . . . . . . . . . . . . . . . . . . . . . . 8
4.1 Atom . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.2 Number . . . . . . . .. . . . . . . . . . . . . . . . . . 8
4.3 String. . . . . . . .. . . .. . . . . . . . . . . . . . . 8
4.3.1 8-bit and Binary Strings. . . . . . . . . . . . . . . 9
5 Operational Considerations . . . . . . . . . . . . . . . . . 9
5.1 SubInbox Naming . . . . . . . . . . . . . . . . .. . . . 9
5.2 Untagged Status Updates . . . . . . . . . . . . . . . . . 10
5.3 Response when no Command in Progress . . . . . . . . . . 10
5.4 Autologout Timer . . . . . . . . . . . . . . . . . . . . 10
5.5 Multiple Commands in Progress . . . . . . . .. . . . . . 10
5.6 Mail Access Protocol Fallback . . . . . . . . . . . . 11
6 Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6.1 Client Commands - Any State . . . . . . . . . . .. . . . 11
6.1.1 CAPABILITY Command . . . . . . . . . . . . . . . . . . 11
6.1.2 NOOP Command . . . . .. . . . . . . . . . . . . . . . 12
6.1.3 LOGOUT Command . . . . . . . . . . . . . . . . . . . . 12
6.2 Client Commands - Non-Authenticated State. . . . .. . . . 12
6.2.1 AUTHENTICATE Command . . . . . . . . . . . . . . . . 13
6.2.2 LOGIN Command . . . . .. . . . . . . . . . . . . . . 14
Sabarish [Page 2] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
6.3 Client Commands - SubInbox management. . . . . . .. . . . 15
6.3.1 CREATE Command . . . . . . . . . . . . . . . . . . . .15
6.3.2 DELETE Command . . . . .. . . . . . . . . . . . . . . .16
6.3.3 RENAME Command . . . . . . . . . . . . . . . . . . . . 16
6.3.4 REPLACE Command . . . . . . . . . . . . . . . . . . . 17
6.3.5 MOVE Command . . . . .. . . . . . . . . . . . . . . . 17
6.3.6 LIST Command . . . . . . . . . . . . . . . . . . . . .18
6.4 Client Commands - Spam Guard Agent . . . . . . . . . . . 19
6.4.1 SEARCHSPAMENTRY Command . . . . . . . . . . . . . . .20
6.4.2 STORESPAMENTRY Command . . . . .. . . . . . . . . . . .20
6.4.3 DELETESPAMENTRY Command . . . . . . . . . . . .. . . . 21
6.4.4 SEARCHSPAMGUARDAGENT Command . . . . . . . . .. . . . 21
6.4.5 STORESPAMGUARDAGENT Command . . . . .. . . . .. . . . 22
6.4.6 DELETESPAMGUARDAGENT Command . . . . . . . . . . . . .22
6.5 Client Commands - Anonymous Query Commands . . .. . . . . 22
6.5.1 VERIFYINSPAMGUARDAGENT Command . . . . . . . . . . .23
6.5.2 VERIFYSUBINBOX Command . . . . .. . . . . . . . . . . .23
7 Security Considerations . . . . . . . . . . . . . . . . . . . 23
8 IANA consideration . . . . . . . . . . . . . . . . . . . . . . 24
9 Informative References . . . . . . . . . . . . . . . . . . . 24
10 Author's Address . . . . . . . . . . . . . . . . . . . . . . . 24
Intellectual Property Statement . . . . . . . . . . . . . . . 25
Full Copyright Statement . . . . . . . . . . . . . . . . . . . 25
Disclaimer . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1 Introduction
1.1 Scope
This document describes how to map messages into subinboxes of an
inbox of a mail. It also describes how to block the spam mail
coming to store in the inbox or subinboxes. It also describes how
the clients are going to manage subinboxes and spam guard agent.
1.2 Conventions Used in this Document
The key words "REQUIRED", "MUST", "MUST NOT", "SHOULD", "SHOULD
NOT", and "MAY" in this document are to be interpreted as described
in "Key words for use in RFCs to Indicate Requirement Levels"
[KEYWORDS].
1.3 Abbreviations
SMTP indicates Simple Mail Transfer Protocol throughout this
document.
IMMP indicates Internet Message Mapping Protocol throughout this
document.
Sabarish [Page 3] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
In examples, "RS:", "IS:" and "IC:" indicate lines sent by the
Receiver-SMTP, IMMP-Server and IMMP-Client respectively.
2 Protocol Overview
2.1 Link Level
The IMMP protocol assumes a reliable data stream such as provided by
TCP. When TCP is used, an IMMP-Server listens on port 323.
2.2 IMMP Model
2.2.1 Client Server Model
This model of IMMP describes how the clients are creating, renaming
or deleting SubInboxes inside an Inbox of a user through
IMMP-Server. This model also describes how the client is managing
the Spam guard agent inside the IMMP-Server. We are going to discuss
about this in details in coming chapters.
2.2.2 IMMP with SMTP model
The IMMP design is based on the following model of communication: as
the result of a destination Receiver-SMTP received the From-Mail
address and To-Mail address from the Sender-SMTP, then it checks
whether To-Mail address (after removing the SubInboxes information
from the mail address) is valid or not.
If the To-Mail address is valid then the Receiver-SMTP server
establishes a two way transmission channel to IMMP-Server and checks
whether that From-Mail address is blocked by the IMMP SPAM guard
agent of the To-Mail address. If the From-Mail address is not
blocked by the Spam guard agent in IMMP server, then it sends an
acceptance receipt OK reply to the Receiver-SMTP to accept the mail.
If From-Mail address is blocked then IMMP-Server sends denied
receipt NO reply to the Receiver-SMTP. IMMP commands are generated
by the Receiver-SMTP and sent to the IMMP-Server. IMMP replies are
sent from the IMMP-Server to the Receiver-SMTP in response to the
commands.
If Spam guard accepted to receive the mail from From-Address,
Receiver-SMTP sends OK reply to the Sender-SMTP to transfer the
remaining mail data. After receiving the end of mail indicator from
the Sender-SMTP, Receiver-SMTP checks whether the To-Mail address
is having the SubInboxes information. If there is no SubInboxes
information in the To-Address, then Receiver-SMTP maps (stores) the
Sabarish [Page 4] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
mail into the INBOX of the recipient. If the To-Mail address has
SubInboxes information then Receiver-SMTP establishes a two way
transmission channel to the IMMP server and checks the
availability of the SubInboxes for that Recipient and if it is
available then sends OK reply to Receiver-SMTP and Receiver-SMTP
server mapped (stored) the data into that SubInbox of the Recipient.
If Receiver-SMTP server gets the unavailability of the SubInbox as
NO reply from the IMAP-Server then Receiver-SMTP server stores the
data into the Inbox of the Recipient itself.
-------------------------------------------------------------
+----------+ +----------+
+------+ | | | | +------+
| User |<-->| | | |<-->| IMMP |
+------+ | Sender- | | Receiver-| +------+
+------+ | SMTP |<-->| SMTP | +------+
| File |<-->| | | |<-->| File |
|System| | | | | |System|
+------+ +----------+ +----------+ +------+
IMMP with SMTP model
Figure 1
-------------------------------------------------------------
2.3 Commands and Responses
A Receiver-SMTP and IMMP-Server and session consist of the
establishment of a client/server connection, query for verifying
whether the From-Address is blocked by the spam guard of IMMP-Server
for the corresponding To-Address and also check the availability of
SubInboxes for that Recipient.
An IMMP client/server model session consists of the establishment of
a client/server connection, an initial greeting from the server, and
client/server interactions. These client/server interactions consist
of a client command, server data, and a server completion result
response.
Sabarish [Page 5] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
All interactions transmitted by client and server are in the form of
lines; that is, strings that end with a CRLF. The protocol receiver
of an IMMP-Client or Server is either reading a line, or is reading
a sequence of octets with a known count followed by a line.
2.3.1 Client Protocol Sender and Server Protocol Receiver
The client command begins an operation. Each client command is
prefixed with an identifier (typically a short alphanumeric string,
e.g. A0001, A0002, etc.) called a "tag". A different tag is
generated by the client for each command.
Requests send by SMTP server to check the availability of SubInboxes
and query against Spam Guard Agent in IMMP server needs not to have
a tag in the request and they need not to Authenticate.
There are two cases in which a line from the client does not
represent a complete command. In one case, a command argument is
quoted with an octet count (see the description of literal in
String under Data Formats); in the other case, the command
arguments require server feedback (see the AUTHENTICATE command).
In either case, the server sends a command continuation request
response if it is ready for the octets (if appropriate) and the
remainder of the command. This response is prefixed with the
token "+".
Note: If, instead, the server detected an error in the command,
it sends a BAD completion response with tag matching the command
(as described below) to reject the command and prevent the client
from sending any more of the command.
It is also possible for the server to send a completion response
for some other command (if multiple commands are in progress), or
untagged data. In either case, the command continuation request is
still pending; the client takes the appropriate action for the
response, and reads another response from the server.
The protocol receiver of an IMMP server reads a command line from
the client, parses the command and its arguments, and transmits
server data and a server command completion result response.
Sabarish [Page 6] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
2.3.2 Server Protocol Sender and Client Protocol Receiver
Data transmitted by the server to the client and status responses
that do not indicate command completion are prefixed with the token
"*", and are called untagged responses.
Server data may be sent as a result of a client command, or may be
sent unilaterally by the server. There is no syntactic difference
between server data that resulted from a specific command and server
data that were sent unilaterally.
The server completion result response indicates the success or
failure of the operation. It is tagged with the same tag as the
client command which began the operation. Thus, if more than one
command is in progress, the tag in a server completion response
identifies the command to which the response applies. There are
three possible server completion responses: OK (indicating success),
NO (indicating failure), or BAD (indicating protocol error such as
unrecognized command or command syntax error).
The protocol receiver of an IMMP client reads a response line from
the server. It then takes action on the response based upon the
first token of the response, which may be a tag, a "*", or a "+". As
described above.
A client MUST be prepared to accept any server response at all
times. This includes server data that it may not have requested.
Server data SHOULD be recorded, so that the client can reference
its recorded copy rather than sending a command to the server to
request the data.
3 State and Flow Diagram
An IMMP server is in one of four states. Most commands are valid in
only certain states. It is a protocol error for the client to
attempt a command while the command is in an inappropriate state.
In this case, a server will respond with a BAD or NO (depending
upon server implementation) command completion result.
Sabarish [Page 7] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
3.1 Non-Authenticated State
In non-authenticated state, the user must supply authentication
credentials before most commands will be permitted. This state is
entered when a connection starts unless the connection has been
pre-authenticated.
3.2 Authenticated State
In authenticated state, the user is authenticated and most commands
will be permitted. This state is entered when a pre-authenticated
connection starts or when acceptable authentication credentials have
been provided.
3.3 Logout State
In logout state, the session is being terminated, and the server
will close the connection. This state can be entered as a result
of a client request or by unilateral server decision.
3.4 Anonymous State
In anonymous state, the SMTP server sends the query to Spam guard
agent of IMMP server and also checks the availability of SubInboxes
in the Inbox.
4 Data Formats
IMMP uses textual commands and responses. Data in IMMP can be in one
of several forms: atom, number, string, parenthesized list, or NIL.
4.1 Atom
An atom consists of one or more non-special characters.
4.2 Number
A number consists of one or more digit characters, and represents a
numeric value.
4.3 String
A string is in one of two forms: literal and quoted string. The
literal form is the general form of string. The quoted string form
is an alternative that avoids the overhead of processing a literal
at the cost of restrictions of what may be in a quoted string.
Sabarish [Page 8] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
A literal is a sequence of zero or more octets (including CR and
LF), prefix-quoted with an octet count in the form of an open brace
("{"), the number of octets, close brace ("}"), and CRLF. In the
case of literals transmitted from server to client, the CRLF is
immediately followed by the octet data. In the case of literals
transmitted from client to server, the client must wait to receive a
command continuation request (described later in this document)
before sending the octet data (and the remainder of the command).
A quoted string is a sequence of zero or more 7-bit characters,
excluding CR and LF, with double quote (<">) characters at each end.
The empty string is represented as either "" (a quoted string with
zero characters between double quotes) or as {0} followed by CRLF
(a literal with an octet count of 0).
Note: Even if the octet count is 0, a client transmitting a literal
must wait to receive a command continuation request.
4.3.1 8-bit and Binary Strings
IMMP implementations MAY transmit 8-bit or multi-octet characters in
literals, but should do so only when the character set is
identified.
Unencoded binary strings are not permitted. A "binary string" is any
string with NUL characters. Implementations MUST encode binary data
into a textual form such as BASE64 before transmitting the data. A
string with an excessive amount of CTL characters may also be
considered to be binary, although this is not required.
5 Operational Considerations
5.1 SubInbox Naming
The interpretation of SubInbox names is implementation-dependent.
However, the mailbox name INBOX is a special name reserved to mean
"the primary mailbox for this user on this server". Using IMMP
protocol can create SubInboxes inside the Inbox in tree model where
the Inbox is the root. We can directly send mail into the SubInboxes
but we need to specify it in the To-Address of a mail so that the
destination Receiver-SMTP works together with IMMP and maps the mail
data into the corresponding SubInbox of Inbox.
Sabarish [Page 9] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
For Example:
1) Mail sends to sabarish@immp.pro store the mail data into INBOX of
Sabarish.
2) Mail sends to work/sabarish@immp.pro store the mail data into
SubInbox "Work" inside the INBOX of Sabarish.
3) Mail sends to office/work/sabarish@immp.pro store the mail data
into the SubInbox "office" inside the SubInbox "Work".
5.2 Untagged Status Updates
At any time, a server can send data that the client did not request.
5.3 Response when no Command in Progress
Server implementations are permitted to send an untagged response
while there is no command in progress. Server implementations that
send such responses MUST deal with flow control considerations.
Specifically, they must either (1) verify that the size of the data
does not exceed the underlying transport's available window size, or
(2) use non-blocking writes.
5.4 Autologout Timer
If a server has an inactivity autologout timer, that timer MUST be
of at least 30 minutes' duration. The receipt of ANY command from
the client during that interval should suffice to reset the
autologout timer.
5.5 Multiple Commands in Progress
The client is not required to wait for the completion result
response of a command before sending another command, subject to
flow control constraints on the underlying data stream. Similarly,
a server is not required to process a command to completion before
beginning processing of the next command, unless an ambiguity would
result because of a command that would affect the results of other
commands. If there is such an ambiguity, the server executes
commands to completion in the order given by the client.
Sabarish [Page 10] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
5.6 Mail Access Protocol Fallback
When a client is directed by a user or an initial configuration to
contact a SubInbox service on a given host, it should first attempt
to reach the IMMP service on that host. The client should then use
the IMMP SubInbox management commands instead of the Mail Access
protocol (IMAP4, etc) mailbox management commands. If the connection
to the IMMP server fails with a refused connection, the client
should fall back to using the Mail Access protocol.
6 Commands
6.1 Client Commands - Any State
The following commands are valid in any state: CAPABILITY, NOOP, and
LOGOUT.
6.1.1 CAPABILITY Command
Arguments: none
Data: mandatory untagged response: CAPABILITY
Result: OK - capability completed
BAD - command unknown or arguments invalid
The CAPABILITY command requests a listing of capabilities that the
server supports. This listing of capabilities is not dependent upon
connection state or user. It is therefore not necessary to issue a
CAPABILITY command more than once in a session.
Capability names refer to extensions, revisions, or amendments to
this specification. No capabilities are enabled without
explicit client action to invoke the capability.
Example: IC: A001 CAPABILITY
IS: * CAPABILITY
IS: A001 OK CAPABILITY completed
Sabarish [Page 11] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
6.1.2 NOOP Command
Arguments: none
Data: no specific data for this command (but see below)
Result: OK - noop completed
BAD - command unknown or arguments invalid
The NOOP command always succeeds. It does nothing.
Since any command can return a status update as untagged data, the
NOOP command can be used as a periodic poll for status updates
during a period of inactivity. The NOOP command can also be used to
reset any inactivity autologout timer on the server.
Example: IC: A002 NOOP
IS: A002 OK NOOP completed
6.1.3 LOGOUT Command
Arguments: none
Data: mandatory untagged response: BYE
Result: OK - logout completed
BAD - command unknown or arguments invalid
The LOGOUT command informs the server that the client is done
with the session. The server must send a BYE untagged response
before the (tagged) OK response, and then close the network
connection.
Example: IC: A003 LOGOUT
IS: * BYE IMMP Server logging out
IS: A003 OK LOGOUT completed
(Server and client then close the connection)
6.2 Client Commands - Non-Authenticated State
In non-authenticated state, the AUTHENTICATE or LOGIN command
establishes authentication and enter authenticated state. The
AUTHENTICATE command provides a general mechanism for a variety
of authentication techniques, whereas the LOGIN command uses the
traditional user name and plaintext password pair.
Sabarish [Page 12] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
Server implementations may allow non-authenticated access to certain
information. The convention is to use a LOGIN command with the
userid "anonymous". A password is required. It is implementation -
dependent what requirements, if any, are placed on the password and
what access restrictions are placed on anonymous users.
Once authenticated (including as anonymous), it is not possible to
re-enter non-authenticated state.
In addition to the universal commands (CAPABILITY, NOOP, and
LOGOUT), the following commands are valid in non-authenticated
state: AUTHENTICATE and LOGIN.
6.2.1 AUTHENTICATE Command
Arguments: authentication mechanism name
Data: continuation data may be requested
Result: OK - authenticate completed, now in authenticated state
NO - authenticate failure: unsupported authentication
mechanism, credentials rejected
BAD - command unknown or arguments invalid,
authentication exchange cancelled
The AUTHENTICATE command indicates an authentication mechanism,
such as described in [IMAP-AUTH], to the server. If the server
supports the requested authentication mechanism, it performs an
authentication protocol exchange to authenticate and identify the
user. Optionally, it also negotiates a protection mechanism for
subsequent protocol interactions. If the requested authentication
mechanism is not supported, the server should reject the
AUTHENTICATE command by sending a tagged NO response.
The authentication protocol exchange consists of a series of server
challenges and client answers that are specific to the
authentication mechanism. A server challenge consists of a command
continuation request response with the "+" token followed by a
BASE64 encoded string. The client answer consists of a line
consisting of a BASE64 encoded string. If the client wishes
to cancel an authentication exchange, it should issue a line with a
single "*". If the server receives such an answer, it must reject
the AUTHENTICATE command by sending a tagged BAD response.
Sabarish [Page 13] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
A protection mechanism provides integrity and privacy protection to
the protocol session. If a protection mechanism is negotiated, it is
applied to all subsequent data sent over the connection. The
protection mechanism takes effect immediately following the CRLF
that concludes the authentication exchange for the client, and the
CRLF of the tagged OK response for the server. Once the protection
mechanism is in effect, the stream of command and response octets is
processed into buffers of ciphertext. Each buffer is transferred
over the connection as a stream of octets prepended with a four
octet field in network byte order that represents the length of the
following data. The maximum ciphertext buffer length is defined by
the protection mechanism.
The server is not required to support any particular authentication
mechanism, nor are authentication mechanisms required to support
any protection mechanisms. If an AUTHENTICATE command fails with a
NO response, the client may try another authentication mechanism by
issuing another AUTHENTICATE command, or may attempt to authenticate
by using the LOGIN command. In other words, the client may request
authentication types in decreasing order of preference, with the
LOGIN command as a last resort.
Example: IS: * OK KerberosV4 IMMP Server
IC: A004 AUTHENTICATE KERBEROS_V4
IS: + AmFYig==
IC: BAcAQU5EUkVXLfhASHFRFUAOCAsho84kLN3/IJmrMG+25a4DT
+nZImJjnTNHJUtxAA+o0KPKfHEcAFs9a3CL5Oebe/ydHJUwYFd
WwuQ1MWiy6IesKvjL5rL9WjXUb9MwT9bpObYLGOKi1Qh
IS: + or//EoAADZI=
IC: DiAF5A4gA+oOIALuBkAAmw==
IS: A004 OK Kerberos V4 authentication successful
Note: the line breaks in the first client answer are for editorial
clarity and are not in real authenticators.
6.2.2 LOGIN Command
Arguments: user name
password
Data: no specific data for this command
Result: OK - login completed, now in authenticated state
NO - login failure: user name or password rejected
BAD - command unknown or arguments invalid
Sabarish [Page 14] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
The LOGIN command identifies the user to the server and carries the
plaintext password authenticating this user.
Example: IC: A005 LOGIN SABARISH RAMAN
IS: A005 OK LOGIN completed
6.3 Client Commands - SubInbox management
This section describes commands permitted in authenticated state for
manipulating SubInboxes as atomic entities.
6.3.1 CREATE Command
Arguments: subinbox name
Data: no specific data for this command
Result: OK - create completed
NO - create failure: can't create subinbox with that
name,can't create subinbox on that subinbox path
which specified along the name
BAD - command unknown or arguments invalid
The CREATE command creates a subinbox with the given name in INBOX.
An OK response is returned only if a new subinbox with that name has
been created. It is an error to attempt to create INBOX or a
subinbox with a name that refers to an existing subinbox inside the
same parent subinbox. Any error in creation will return a tagged NO
response.
If the subinbox name is suffixed with the server's hierarchy
separator character (as returned from the server by a LIST command),
this is a declaration that the client may, in the future, create
subinbox names under this name in the hierarchy. Server
implementations that do not require this declaration MUST ignore it
and return a tagged OK response.
Example: IC: A006 CREATE work/
IS: A006 OK CREATE completed
IC: A007 CREATE office/work
IS: A007 OK CREATE completed
Sabarish [Page 15] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
Note: the interpretation of the above commands in this example
depends on whether "/" was returned as the hierarchy separator from
LIST. If "/" is the hierarchy separator, then a new level of
hierarchy named "work" with a member called "office" is created.
Otherwise, two subinbox at the same hierarchy level are created.
6.3.2 DELETE Command
Arguments: subinbox name
Data: no specific data for this command
Result: OK - delete completed
NO - delete failure: can't delete subinbox with that name
BAD - command unknown or arguments invalid
The DELETE command permanently removes the subinbox with the given
name. An OK response is returned only if the subinbox has been
deleted. It is an error to attempt to delete INBOX or a subinbox
name that does not exist. Any error in deletion will return a tagged
NO response.
Example: IC: A008 DELETE work
IS: A008 OK DELETE completed
6.3.3 RENAME Command
Arguments: existing subinbox name
new subinbox name
Data: no specific data for this command
Result: OK - rename completed
NO - rename failure: can't rename subinbox with that name
can't rename to subinbox with that name
BAD - command unknown or arguments invalid
The RENAME command changes the name of a subinbox. An OK response is
returned only if the subinbox has been renamed. It is an error to
attempt to rename from a subinbox name that does not exist or to a
subinbox name that already exists in the parent subinbox. Any error
in renaming will return a tagged NO response.
Sabarish [Page 16] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
Renaming INBOX is permitted; a new, empty INBOX is created in its
place.
Example: IC: A009 RENAME worksabari offsabari
IS: A009 OK RENAME completed
6.3.4 REPLACE Command
Arguments: existing subinbox name
existing new subinbox name
Data: no specific data for this command
Result: OK - replace completed
NO - replace failure: can't delete subinbox with that
name, can't replace with subinbox with that name
BAD - command unknown or arguments invalid
The REPLACE command deletes a subinbox, automatically changing
subscriptions to a new subinbox. An OK response is returned only
if the subinbox has been removed. It is an error to attempt to
replace a subinbox name that does not exist or replace with a
subinbox name that does not exist. Any error in deletion will return
a NO response.
Replacing INBOX is not permitted.
Example: IC: A010 REPLACE worksabari offsabari
IS: A010 OK REPLACE completed
6.3.5 MOVE Command
Arguments: subinbox name
partition parenthesized list
Data: no specific data for this command
Result: OK - move completed
NO - move failure: can't move subinbox with that name
can't move subinbox to that server/partition
BAD - command unknown or arguments invalid
Sabarish [Page 17] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
The MOVE command moves a subinbox between subinboxes, moves a
subinbox between two subinboxes. The partition parenthesized list
specifies where the subinbox is to be moved to. The interpretation
of the partition parenthesized list is the same as for the CREATE
command.
Example: IC: A011 MOVE SABARISUBINBOX (oldpath, newpath )
IS: A011 OK MOVE completed
6.3.6 LIST Command
Arguments: reference name
subinbox name with possible wildcards
Data: untagged responses: LIST
Result: OK - list completed
NO - list failure: can't list that reference or name
BAD - command unknown or arguments invalid
The LIST command returns a subset of names from the complete set of
all subinboxes inside the inbox. Zero or more untagged LIST replies
are returned, containing the name hierarchy delimiter and name; see
the description of the LIST reply for more detail.
An empty ("" string) reference name argument indicates that the
subinbox name is interpreted as by SELECT. The returned subinbox
names MUST match the supplied subinbox name pattern. A non-empty
reference name argument is the name of a subinbox or a level of
subinbox hierarchy.
The reference and subinbox name arguments are interpreted, in an
implementation-dependent fashion, into a canonical form that
represents an unambiguous left-to-right hierarchy. The returned
subinbox names will be in the interpreted form.
Any part of the reference argument that is included in the
interpreted form SHOULD prefix the interpreted form. It should also
be in the same form as the reference name argument. This rule
permits the client to determine if the returned subinbox name is in
the context of the reference argument, or if something about the
subinbox argument overrode the reference argument. Without this
rule, the client would have to have knowledge of the server's naming
semantics including what characters are "breakouts" that override a
naming context.
Sabarish [Page 18] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
For example, here are some examples of how references and subinbox
names might be interpreted on a UNIX-based server:
Reference Subinbox Name Interpretation
------------ ------------ --------------
inbox/Mail/ foo.* inbox/Mail/foo.*
inbox/ % inbox/%
The character "*" is a wildcard, and matches zero or more characters
at this position. The character "%" is similar to "*", but it does
not match a hierarchy delimiter.
Example: IC: A012 LIST "inbox/Mail/" "%"
IS: * LIST (\Noselect) "/" inbox/Mail/foo
IS: * LIST () "/" inbox/Mail/meetings
IS: A012 OK LIST completed
6.4 Client Commands - Spam Guard Agent
This section describes commands permitted in authenticated state for
manipulating Spam Guard Agent. Spam Guard Agent provides a way for
users to store list of spam mail addresses and blocked the mail when
the SMTP server is getting mails from those spam mail addresses with
the help of IMMP.
Servers are expected to at least allow the client to manipulate the
spam guard agent with the same name as the "user" specified in the
LOGIN command.
Servers allow client to create any number of spam guard agents and
IMMP check the incoming mails with all the information in the spam
guard agents assigned to that user.
Each spam guard agent contains some number of spam mail addresses.
The standard field is:
EMAIL electronic mail address
Sabarish [Page 19] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
6.4.1 SEARCHSPAMENTRY Command
Arguments: spam guard agent name
lookup criteria
Data: untagged responses: SEARCHSPAMENTRY
Result: OK - searchspamentry completed
NO - searchspamentry failure: can't searchspamentry that
name
BAD - command unknown or arguments invalid
The SEARCHSPAMENTRY command searches the specified spam guard agent
for mail address that express the intersection (AND function) of all
of the specified criteria. The names matching the criteria are
returned in some set of untagged SEARCHSPAMENTRY replies. If no
criteria are specified, all mail addresses in the spam guard agent
are returned.
Wildcards are permitted in the pattern as in LIST, except that the
behavior of the "%" wildcard is undefined. The reserved field "mail"
specifies entries whose mail addresses matches the specified
pattern.
Example: IC: A013 SEARCHSPAMENTRY Sabarish Email "*Rubble"
IS: * SEARCHSPAMENTRY "*Rubble"
IS: A013 OK SEARCHSPAMENTRY completed
6.4.2 STORESPAMENTRY Command
Arguments: spam guard agent name
Email
Data: no specific data for this command
Result: OK - storespamentry completed
NO - storespamentry failure: can't storespamentry that
name
BAD - command unknown or arguments invalid
Store the spam entry in the specified spam guard agent. Here the
spam entry is a mailing address. For creating a new entry, directly
use this storespamentry. For editing the spam entry, delete the spam
entry and store the new one.
Sabarish [Page 20] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
Entry names are case-insensitive strings.
Example: IC: A014 STORESPAMENTRY SabariGuard "mail@immp.pro"
IS: A014 OK STORESPAMENTRY completed
6.4.3 DELETESPAMENTRY Command
Arguments: spam guard agent name
Email
Data: no specific data for this command
Result: OK - deletespamentry completed
NO - deletespamentry failure: can't deletespamentry that
name
BAD - command unknown or arguments invalid
Remove the spam entry in the specified spam guard agent for the
specified Email.
Example: IC: A015 DELETESPAMENTRY SabariGuard "mail@immp.pro"
IS: A015 OK DELETESPAMENTRY completed
6.4.4 SEARCHSPAMGUARDAGENT Command
Arguments: lookup criteria
Data: untagged responses: SEARCHSPAMGUARDAGENT
Result: OK - searchspamguardagent completed
NO - searchspamguardagent failure: can't
searchspamguardagent that name
BAD - command unknown or arguments invalid
The SEARCHSPAMGUARDAGENT command searches for the specified spam
guard assigned for the login user. The names matching the criteria
are returned in some set of untagged SEARCHSPAMGUARDAGENT replies.
If no criteria are specified, all spam guard agents are returned.
Wildcards are permitted in the pattern as in LIST, except that the
behavior of the "%" wildcard is undefined. The reserved field "mail"
specifies entries whose mail addresses matches the specified
pattern.
Example: IC: A016 SEARCHSPAMGUARDAGENT "*RubbleAgent"
IS: * SEARCHSPAMGUARDAGENT "*RubbleAgent"
IS: A016 OK SEARCHSPAMGUARDAGENT completed
Sabarish [Page 21] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
6.4.5 STORESPAMGUARDAGENT Command
Arguments: spam guard agent name
Data: no specific data for this command
Result: OK - storespamguardagent completed
NO - storespamguardagent failure: can't
storespamguardagent that name
BAD - command unknown or arguments invalid
Store the spam guard agent and assigned for the login user. For
creating a new guard, directly use this storespamguardagent. For
editing the spam guard agent, delete the spam guard agent and store
the new one.
Spam guard agent names are case-insensitive strings.
Example: IC: A017 STORESPAMGUARDAGENT SabariGuard
IS: A017 OK STORESPAMGUARDAGENT completed
6.4.6 DELETESPAMGUARDAGENT Command
Arguments: spam guard agent name
Data: no specific data for this command
Result: OK - deletespamguardagent completed
NO - deletespamguardagent failure: can't
deletespamguardagent that name
BAD - command unknown or arguments invalid
Remove the spam guard agent for the login user.
Example: IC: A018 DELETESPAMENTRY SabariGuard "mail@immp.pro"
IS: A018 OK DELETESPAMENTRY completed
6.5 Client Commands - Anonymous Query Commands
This section describes commands permitted in anonymous state for
querying IMMP server to check whether a particular subinbox is
available for that mail address and also check whether that incoming
mail address is blocked by the spam guard agent of the IMMP server.
Mostly mail posting protocols (SMTP, etc) use this commands.
Sabarish [Page 22] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
6.5.1 VERIFYINSPAMGUARDAGENT Command
Arguments: check-mail-address, in-mail-address
Data: no specific data for this command
Result: OK - not blocked by Spam guard agent.
NO - blocked by Spam guard agent
BAD - command unknown or arguments invalid
Check whether the check-mail-address is blocked by spam guard agents
of the user of in-mail-address.
Example:
RS: VERIFYINSPAMGUARDAGENT "spammail@immp.pro" "mymail@immp.pro"
IS: OK VERIFYINSPAMGUARDAGENT completed
6.5.2 VERIFYSUBINBOX Command
Arguments: sub-inbox, mail-address
Data: no specific data for this command
Result: OK - available inside the inbox
NO - unavailable inside the inbox
BAD - command unknown or arguments invalid
Check whether the sub-inbox is available inside the inbox of the
mail-address.
Example: RS: VERIFYSUBINBOX "office/work" "mymail@immp.pro"
IS: OK VERIFYSUBINBOX completed
7 Security Considerations
IMMP protocol transactions, including spam guard agent and option
data, are sent in the clear over the network unless the optional
privacy protection is negotiated in the AUTHENTICATE command.
A server error message for an AUTHENTICATE command which fails due
to invalid credentials should not detail why the credentials are
invalid.
Sabarish [Page 23] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
Use of the LOGIN command sends passwords in the clear. This can be
avoided by using the AUTHENTICATE command instead.
A server error message for a failing LOGIN command should not
specify that the user name, as opposed to the password, is invalid.
Additional security considerations are discussed in the section
discussing the AUTHENTICATE and LOGIN commands.
8 IANA consideration
IANA needs to reserve 323 port to this protocol.
9 Informative References
[SMTP] Jonathan B. Postel, "SIMPLE MAIL TRANSFER PROTOCOL", RFC 821
[POP3] R. Gellens, "POP3 Extension Mechanism", RFC 2449
[IMAP4] Crispin, Mark R., "Internet Message Access Protocol -
Version 4", RFC 1730.
[IMAP-AUTH] Myers, J., "IMAP4 Authentication Mechanisms", RFC 1731
[MIME-2] Moore, K., "MIME (Multipurpose Internet Mail Extensions)
Part Two: Message Header Extensions for Non-ASCII Text", RFC 1522.
[RFC-822] Crocker, D., "Standard for the Format of ARPA Internet
Text Messages", STD 11, RFC 822.
10 Author's Address
Sabarish Ramanathan
"Sabari Illam",
96 Gangadhara Iyer Street,
Karaikudi, Tamil Nadu 630 001
India
sabarish@computer.org
Sabarish [Page 24] Expires November 2005
Internet Draft IMMP -- Internet Message Mapping Protocol May 2005
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.
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 Internet Society (2005).
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.
Disclaimer
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.
Sabarish [Page 25] Expires November 2005