Ien: 113 RFC: 759
Ien: 113 RFC: 759
RFC: 759
Jonathan B. Postel
August 1980
(213) 822-1511
August 1980
Internet Message Protocol
TABLE OF CONTENTS
1. INTRODUCTION ..................................................... 1
Postel [Page i]
August 1980
Internet Message Protocol
Table Of Contents
REFERENCES .......................................................... 69
PREFACE
Jon Postel
1. INTRODUCTION
1.1. Motivation
This system also provides for the communication of data items beyond
the scope of contemporary message systems. Messages can include data
objects which could represent drawings, or facsimile images, or
digitized speech. One can imagine message stations equipped with
speakers and microphones (or telephone hand sets) where the body of a
message or a portion of it is recorded digitized speech. The output
terminal could include a graphics display, and the message might
present a drawing on the display, and verbally (via the speaker)
describe certain features of the drawing. This specification provides
for the composition of complex data objects and their encoding in
machine independent basic data elements.
1.2. Scope
Postel [Page 1]
August 1980
Internet Message Protocol
Introduction
In the first case, another user on this host, the MPM places the
message in a data structure read by the destination user, where that
user's UIP will look for incoming messages.
In the second case, the user on another host in this network, the MPM
transmits the message to the MPM on that host. That MPM then repeats
[Page 2] Postel
August 1980
Internet Message Protocol
Introduction
In the third case, the user on a host in another network, the MPM
transmits the messages to an MPM in that network if it knows how to
establish a connection directly to it; otherwise, the MPM transmits
the message to an MPM that is "closer" to the destination. An MPM
might not know of direct connections to MPMs in all other networks,
but it must be able to select a next MPM to handle the message for
each possible destination network.
When local message protocols are used, special conversion programs are
required to transform local messages to internet format when they are
going out, and to transform internet messages to local format when
they come into the local environment. Such transformations
potentially lead to information loss. The internet message format
attempts to provide features to capture all the information any local
message system might use. However, a particular local message system
is unlikely to have features equivalent to all the possible features
of the internet message system. Thus, in some cases the
transformation of an internet message to a local message discards some
of the information. For example, if an internet message carrying
mixed text and speech data in the body is to be delivered in a local
system which only carries text, the speech data may be replaced by the
text string "There was some speech here". Such discarding of
information is to be avoided when at all possible, and to be deferred
as long as possible; still, the possibility remains that in some cases
it is the only reasonable thing to do.
Postel [Page 3]
August 1980
Internet Message Protocol
Introduction
1.5. Interfaces
The MPM receives input and produces output through data structures
that are produced and consumed respectively by user interface (or
other) programs.
[Page 4] Postel
August 1980
Internet Message Protocol
2. FUNCTIONAL DESCRIPTION
This section gives an overview of the Internet Message System and its
environment.
2.1. Terminology
2.2. Assumptions
Postel [Page 5]
August 1980
Internet Message Protocol
Functional Description
Each MPM will have a unique internet address. This feature will
enable every MPM to place a unique "handling-stamp" on a message which
passes through the MPM enroute to delivery.
User User
\ /
UIP UIP
\ /
--+----------------------------------------+-- Service
| \ / | Interface
| +--------+ +--------+ |
| | Module | <--Protocol--> | Module | |
| +--------+ +--------+ |
| \ / |
| +-----------------------+ |
| | Communication Service | |
| +-----------------------+ |
| |
+----------------------------------------+
Message Service
Figure 1.
[Page 6] Postel
August 1980
Internet Message Protocol
Functional Description
2.4. Mechanisms
Postel [Page 7]
August 1980
Internet Message Protocol
Functional Description
User User
\ /
UIP UIP
\ /
+---------------------------------------------------------+
| \ / |
| +-----+ +-----+ +-----+ |
| | MPM | <--Protocol--> | MPM | <--Protocol--> | MPM | |
| +-----+ +-----+ +-----+ |
| | / \ | |
| +-----------------------+ +-----------------------+ |
| |Communication Service A| |Communication Service B| |
| +-----------------------+ +-----------------------+ |
| |
+---------------------------------------------------------+
Figure 2.
It should be clear that there are two roles an MPM can play, an
end-point MPM or a relay MPM. Most MPMs will play both roles. A
relay MPM acts to relay messages from one communication environment to
another. An end-point MPM acts as a source or destination of
messages.
The transfer of data between UIPs and MPMs is viewed as the exchange
of data structures which encode messages. The transfer of data
between MPMs is also in terms of the transmission of structured data.
[Page 8] Postel
August 1980
Internet Message Protocol
Functional Description
Message Flow
Figure 3.
Postel [Page 9]
August 1980
Internet Message Protocol
Functional Description
This protocol the benefited from the earlier work on message protocols
in the ARPA Network [5,6,7,8,9], and the ideas of others about the
design of computer message systems
[10,11,12,13,14,15,16,17,18,19,20,21].
Protocol Relationships
Figure 4.
Figure 5.
Note that in the old ARPANET protocols one can't send messages (or
communicate in any way) to other networks since it has no gateway
level or internet protocol [5].
3. DETAILED SPECIFICATION
The basic data elements are defined in section 3.7. In summary, these
are exact forms for representing integers, strings, booleans, et
cetera. There are also two elements for building data structures:
list and property list. Lists are simple lists of elements, including
lists. Property lists are lists of pairs of elements, where the first
element of each pair names the pair. That is, a property list is a
list of <name,value> pairs. In general, when an object is composed of
multiple instances of a simpler object it is represented as a list of
the simpler objects. When an object is composed of a variety of
simpler objects it is represented as a property list of the simpler
objects. In most uses of the property list representation, the
presence of <name,value> pairs in addition to those specifically
required is permitted.
When shipped between two MPMs, a message will take the form of a
property list, with the <name,value> pairs in this order.
MESSAGE is:
MESSAGE-BAG is:
The Identification
The Command
The Document
3.3. Identification
IDENTIFICATION is:
( mpm-identifier, transaction-number )
3.4. Command
COMMAND is:
The trace is a list of the MPMs that have handled the message. Each
MPM must add its handling-stamp to the list.
arguments:
arguments:
address:
The address is the final mailbox the message was delivered to.
This would be different from the original mailbox if the message
was forwarded, and is limited to the essential information
needed for delivery.
error-class:
error-string:
arguments: none.
arguments:
error-class:
error-string:
If the mailbox was found the error class is 0 and the error
string is "OK". If the mailbox has moved and a forwarding
address in known the error class is 1 and the error string is
"Mailbox moved, see address". Otherwise the error class is
greater than 1 and the error string may be one of the following:
"Mailbox doesn't exist", "Mailbox full", "Mailbox has moved, try
the new location indicated in the address".
arguments:
arguments:
error-class:
error-string:
If the command was canceled the error class is 0 and the error
string is "OK". Otherwise the error class is positive and the
error string may be one of the following: "No such transaction",
or any error for an unreachable mailbox.
name value
---- -----
mailbox property list of address information
operation name of operation
arguments ---
error-class numeric class of the error
error-string text description of the error
trace list ( handling-stamp, ... )
3.5. Document
The actual document follows the command. The message delivery system
does not depend on the document, examine it, or use it in any way.
The standard for the contents of the document is reference [25]. The
document must be the last <name,value> pair in the message property
list.
Action
Address
name description
---- -----------
NET network name
HOST host name
USER user name
or:
name description
---- -----------
MPM mpm-identifier
USER user name
Answer
Arguments
City
Command
Country
Date
yyyy-mm-dd-hh:mm:ss,fff+hh:mm
The time is local time and the offset is the difference between
local time and Coordinated Universal Time (UTC). To convert from
local time to UTC algebraically subtract the offset from the local
time.
Document
Error-Class
A numeric code for the class of the error. The error classes are
coded as follows:
Error-String
error-string error-class
No errors 0
Ok 0
Mailbox Moved, see address 1
Mailbox Full, try again later 2
Syntax error, operation unrecognized 3
Syntax error, in arguments 3
No Such User 3
No Such Host 3
No Such Network 3
No Such Transaction 3
Mailbox Does Not Exist 3
Ambiguous Address 3
Server error, try again later 4
No service available 5
Command not implemented 5
Aborted as requested by user 6
Handling-Stamp
The handling-stamp indicates the MPM, the date (including the time)
that a message was processed by an MPM, and the type of handling
action taken.
Host
Identification
( mpm-identifier, transaction-number )
Internet Address
Mailbox
name description
---- -----------
MPM mpm-identifier
NET network name
HOST host name
PORT address of MPM within the host
USER user name
ORG organization name
CITY city
STATE state
COUNTRY country
ZIP zip code
PHONE phone number
MPM-Identifier
The internetwork address of the MPM. This may be the ARPA Internet
Address or an X.121 Public Data Network Address [29]. The
mpm-identifier is a property list which has one <name,value> pair.
This unusual structure is used so that it will be easy to determine
the type of address used.
Network
Operation
Organization
Phone
Port
This names the port or subaddress within a host of the MPM. The
default port for the MPM is 45 (55 octal) [4].
Reference
State
Trace
Each MPM that handles the message must add its handling-stamp to
this list. This will allow detection of messages being sent in a
loop within the internet mail system, and aid in fault isolation.
Trail
Transaction Number
Type-of-Service
User
X121 Address
Zip Code
The data elements defined here are similar to the data structure and
encoding used in NSW [30].
+------+
0 No Operation | 0 |
+------+
+------+------+------+------+------
1 Padding | 1 | octet count | Data ...
+------+------+------+------+------
+------+------+
2 Boolean | 2 | 1/0 |
+------+------+
+------+------+------+
3 Index | 3 | Data |
+------+------+------+
+------+------+------+------+------+
4 Integer | 4 | Data |
+------+------+------+------+------+
Extended +------+------+------+------+------
5 Precision | 5 | octet count | Data ...
Integer +------+------+------+------+------
+------+------+------+------+------
6 Bit String | 6 | bit count | Data ...
+------+------+------+------+------
+------+------+------
7 Name String | 7 | count| Data ...
+------+------+------
+------+------+------+------+------
8 Text String | 8 | octet count | Data ...
+------+------+------+------+------
+------+------+------+------+-----
9 List | 9 | octet count | Data ...
+------+------+------+------+-----
+------+------+------+------+------
10 Proplist | 10 | octet count | Data ...
+------+------+------+------+------
+------+
11 End of List | 11 |
+------+
Element code 0 (NOP) is an empty data element used for padding when it
is necessary. It is ignored.
Element code 6 (BITSTR) is a bit string element for binary data. The
bit string is padded on the right with zeros to fill out the last
octet if the bit string does not end on an octet boundary. This data
type must have the bit-count in the three-octet count field instead of
the number of octets.
+------+------+------+------+------+------+
| 9 | octet count | item count |
+------+------+------+------+------+------+
+------+------/---+
repeated | element |
+------+------/---+
+-------+
|ENDLIST|
+-------+
+------+------+------+------+------+
| 10 | octet count | pair |
+------+------+------+------+------+
+------+------/---+------+------/---+
repeated | name element | value element |
+------+------/---+------+------/---+
+-------+
|ENDLIST|
+-------+
Structure Sharing
This is a very general sharing mechanism. PLEASE NOTE THAT THE MPM
WILL NOT SUPPORT THE FULL USE OF THIS MECHANISM. THE MPM WILL ONLY
SUPPORT SHARING OF WHOLE DOCUMENTS. No other level of sharing will
be supported by the MPMs.
+------+------+------+
12 Share Tag | 12 | share-index |
+------+------+------+
+------+------+------+
13 Share Reference | 13 | share-index |
+------+------+------+
The example above is now repeated in detail showing the use of the
high-order bits.
+------+------+------+------+------+------+------+------+
|11 - 9|01 - 9| <a> | 12 | 0 | 1 | <b> | 11 |
+------+------+------+------+------+------+------+------+
+------+------+------+------+------+------+------+
|10 - 9| <c> | 13 | 0 | 1 | 11 | 11 |
+------+------+------+------+------+------+------+
00-LIST ( a b c b )
11-LIST ( a T1:b c R1 )
4. OTHER ISSUES
This section discusses various other issues that need to be dealt with
in a computer message system.
Thus the MPMs will keep logs of messages handled and will periodically
charge their neighboring MPM for messages handled for them. This
settlement procedure is outside the message system and between the
administrators of the MPMs.
The MPM at the source of the message will have a local means of
identifying the user to charge for the message delivery service. The
relay and destination MPMs will know which neighbor MPMs to charge (or
settle with) for delivery of their messages.
The mailbox provides for many types of address information. The MPMs
in the ARPA internet can most effectively use the internet address
[2]. The use of other address information is not yet very clear.
Some thoughts on addressing issues may be found in the references
[33,34,35].
Even with relatively slowly changing routing information the MPMs need
an automatic mechanism for adjusting their routing tables. The
routing problem here is quite similar to the problem of routing in a
network of packet switches such as the ARPANET IMPs or a set of
internet gateways. A great deal of work has been done on such
problems and many simple schemes have been found faulty. There are
details of these procedures which may become troublesome when the
number of nodes grows beyond a certain point or the frequency of
update exchanges gets large.
One further feature is that when a new network comes into existence an
entry must be added to the table in each MPM. The MPMs should
therefore expect the case that update information may contain entries
which are new networks, and in such an event add these entries to
their own tables.
When a new MPM comes into existence it will have an initial table
indicating that it is a good route (short distance) to the network it
is in, and will have entries for a few neighbor networks. It will
send an initial "update" to those neighbor MPMs which will respond
with more complete tables, thus informing the new MPM of routes to
many networks.
This routing update mechanism is a simple minded scheme and may have
to be replaced as the system of MPMs grows. In addition it ignores
the opportunity for MPMs to use other information (besides destination
network name) for routing. MPMs may have tables that indicate
next-MPMs based on city, telephone number, organization, or other
categories of information.
4.3. Encryption
+------+------+------+------+
14 Encrypt | 14 | octet count |
+------+------+------+------+
+------+------+------+-------
|alg id| key id | Data ...
+------+------+------+--------
To process this data element, the user is asked for the appropriate
key and the data can then be decrypted. The data thus revealed will
be in the form of complete data element fields. Encryption cannot
occur over a partial field. The revealed data is then processed
normally.
Note that there is no reason why all fields of a document could not be
encrypted including all document header information such as From,
Date, etc.
The heart of the internet message system is the MPM which is responsible
for routing and delivering messages. Each network must have at least
one MPM. These MPMs are logically connected together, and internet mail
is always transferred along logical channels between them. The MPMs
interface with existing local message systems.
Since the local message system may be very different from the internet
system, special programs may be necessary to convert incoming internet
messages to the local format. Likewise, messages outgoing to other
networks may be converted to the internet format and sent via the MPMs.
5.1. Interfaces
User Interface
It is assumed that the interface between the MPM and the UIP
provides for passing data structures which represent the document
portion of the message. In addition, this interface must pass the
delivery address information (which becomes the information in the
mailbox field of the command). It is assumed that the information
is passed between the UIP and the MPM via shared files, but this is
not the only possible mechanism. These two processes may be more
strongly coupled (e.g., by sharing memory), or less strongly coupled
(e.g., by communicating via logical channels).
The MPM finds the file and extracts the the information. It
creates a message, assigning a transaction-number and forming a
deliver command. The MPM records the UIP associated with this
message. The MPM sends the message toward the destination.
When the MPM receives a deliver message from another MPM addressed
to a user in its domain, it extracts the document and puts it into
a file for the UIP associated with the destination user. The MPM
also sends an acknowledge message to the originating MPM.
Communication Interface
1--Acceptor
2--Message-Bag Processor
If the local net message system uses the protocol of the MPMs, then
there need be no distinction between local net and foreign net
delivery procedures.
When an MPM has a message to send to another MPM, it must add its own
handling-stamp to the trace field of the command. The trace then
becomes a record of the route the message has taken. An MPM should
examine the trace field to see if the message is in a routing loop.
All commands require the return of the trace as a trail in the
matching reply command.
The Local Host queue serves as input to the Local Host Delivery
process. This component is responsible for delivering messages to its
local host. It may call on a conversion program to reformat the
messages into a form the local protocol will accept. This will
probably involve such things as copying shared information.
The Local Net queue serves as input to the Local Net Delivery process.
This component is responsible for delivering messages to other hosts
on its local net. It must be capable of handling whatever error
conditions the local net might return, and should include the ability
to retransmit. It may call on a conversion program to reformat the
messages into a form the local protocol will accept. This will
probably involve such things as copying shared information.
The other two processes are more closely coupled. The Foreign Net
Router takes its input bags from the Foreign Net Queue. From the
internal information it contains, it determines which of the MPMs to
which it is connected should receive the bag.
It then places the bag along with the routing information into the
Send Mail Queue. The Foreign Net Sender retrieves it from that queue
and transmits it across a channel to the intended foreign MPM. The
Sender aggregates messages to the same next MPM into a bag.
Forwarding
Implementation Recommendations
Also note that share-tags may be copied into separate message bags
which are not referenced. These could be removed with another pass
over the message bag.
Date: 1979-03-29-11:46-08:00
From: Jon Postel <Postel@ISIE>
Subject: Meeting Thursday
To: Danny Cohen <Cohen@USC-ISIB>
CC: Linda
Danny:
--jon.
1. message
3. (ID:(mpm-identifier, transaction-number),
CMD:(MAILBOX:mailbox, OPERATION:operation,
arguments, TRACE:trace),
DOC:<<document>>)
4. (ID:(mpm-identifier, transaction-number),
CMD:(MAILBOX:mailbox, OPERATION:operation,
TYPE-OF-SERVICE:regular, TRACE:trace),
DOC:<<document>>)
5. (ID:(MPM:(IA:12,1,0,52,0,45), TRANSACTION:37),
CMD:(MAILBOX:(MPM:(IA:12,3,0,52,0,45),
NET:ARPA,
HOST:ISIB,
PORT:45,
USER:Cohen),
OPERATION:DELIVER,
TYPE-OF-SERVICE:REGULAR,
TRACE:(MPM:(IA:12,1,0,52,0,45)
DATE:1979-03-29-11:46-08:00,
ACTION:ORIGIN)),
DOC:<<document>>)
6. PROPLIST:(
ID:PROPLIST:(
MPM:PROPLIST:(
IA:12,1,0,52,0,45),
ENDLIST
TRANSACTION:37)
ENDLIST,
CMD:PROPLIST(
MAILBOX:(PROPLIST:(
MPM:PROPLIST(
IA:12,3,0,52,0,45),
ENDLIST
NET:ARPA,
HOST:ISIB,
PORT:45,
USER:Cohen ),
ENDLIST
OPERATION:DELIVER,
TYPE-OF-SERVICE:REGULAR,
TRACE:(PROPLIST:MPM:
(PROPLIST:
IA:12,1,0,52,0,45)
ENDLIST
DATE:1979-03-29-11:46-08:00,
ACTION:ORIGIN)),
ENDLIST
ENDLIST
DOC:<<document>>)
ENDLIST
The following are four views of the message of example 1 during the
successive transmission from the origination MPM, through a relay MPM,
to the destination MPM, and the return of the acknowledgment, through
a relay MPM, to the originating MPM.
+-----------------------------------------------------------------+
| A B |
| sending --> originating --> relay --> destination --> receiving |
| user MPM MPM MPM user |
| |
| D C |
| originating <-- relay <-- destination |
| MPM MPM MPM |
+-----------------------------------------------------------------+
Transmission Path
Figure 6.
PROPLIST:
NAME:"ID",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:"10,1,0,52,0,45"
ENDLIST
NAME:"TRANSACTION", INTEGER:37
ENDLIST
NAME:"CMD",
PROPLIST:
NAME:"MAILBOX",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:"10,3,0,52,0,45"
ENDLIST
NAME:"NET", NAME:"ARPA"
NAME:"HOST", NAME:"ISIB"
NAME:"PORT", NAME:"45"
NAME:"USER", NAME:"Cohen"
ENDLIST
NAME:"OPERATION", NAME:"DELIVER"
NAME:"TYPE-OF-SERVICE", NAME:"REGULAR"
NAME:"TRACE",
LIST:
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:"10,1,0,52,0,45"
ENDLIST
NAME:"DATE", NAME:"1979-03-29-11:47.5-08:00"
NAME:"ACTION", NAME:"ORIGIN"
ENDLIST
ENDLIST
ENDLIST
NAME:"DOC", <<document>>
ENDLIST
PROPLIST:
NAME:"ID",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:"10,1,0,52,0,45"
ENDLIST
NAME:"TRANSACTION", INTEGER:37
ENDLIST
NAME:"CMD",
PROPLIST:
NAME:"MAILBOX",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:"10,3,0,52,0,45"
ENDLIST
NAME:"NET", NAME:"ARPA"
NAME:"HOST", NAME:"ISIB"
NAME:"PORT", NAME:"45"
NAME:"USER", NAME:"Cohen"
ENDLIST
NAME:"OPERATION", NAME:"DELIVER"
NAME:"TYPE-OF-SERVICE", NAME:"REGULAR"
NAME:"TRACE",
LIST:
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:"10,1,0,52,0,45"
ENDLIST
NAME:"DATE", NAME:"1979-03-29-11:47.5-08:00"
NAME:"ACTION", NAME:"ORIGIN"
ENDLIST
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:"10,2,0,52,0,45"
ENDLIST
NAME:"DATE", NAME:"1979-03-29-11:48-08:00"
NAME:"ACTION", NAME:"RELAY"
ENDLIST
ENDLIST
ENDLIST
NAME:"DOC", <<document>>
ENDLIST
PROPLIST:
NAME:"ID",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:"10,3,0,52,0,45"
ENDLIST
NAME:"TRANSACTION", INTEGER:1993
ENDLIST
NAME:"CMD",
PROPLIST:
NAME:"MAILBOX",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:"10,1,0,52,0,45"
ENDLIST
NAME:"NET", NAME:"ARPA"
NAME:"HOST", NAME:"ISIE"
NAME:"PORT", NAME:"45"
NAME:"USER", NAME:"*MPM*"
ENDLIST
NAME:"OPERATION", NAME:"ACKNOWLEDGE"
NAME:"REFERENCE",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:"10,1,0,52,0,45"
ENDLIST
NAME:"TRANSACTION", INTEGER:37
ENDLIST
NAME:"ADDRESS",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:"10,3,0,52,0,45"
ENDLIST
NAME:"USER", NAME:"Cohen"
ENDLIST
NAME:"TYPE-OF-SERVICE", NAME:"REGULAR"
NAME:"ERROR-CLASS", INDEX:0
NAME:"ERROR-STRING", NAME:"Ok"
NAME:"TRAIL",
LIST:
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:"10,1,0,52,0,45"
ENDLIST
NAME:"DATE", NAME:"1979-03-29-11:47.5-08:00"
NAME:"ACTION", NAME:"ORIGIN"
ENDLIST
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:"10,2,0,52,0,45"
ENDLIST
NAME:"DATE", NAME:"1979-03-29-11:48-08:00"
NAME:"ACTION", NAME:"RELAY"
ENDLIST
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:"10,3,0,52,0,45"
ENDLIST
NAME:"DATE", NAME:"1979-03-29-11:51.567-08:00"
NAME:"ACTION", NAME:"DESTINATION"
ENDLIST
ENDLIST
NAME:"TRACE",
LIST:
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:"10,3,0,52,0,45"
ENDLIST
NAME:"DATE", NAME:"1979-03-29-11:52-08:00"
NAME:"ACTION", NAME:"ORIGIN"
ENDLIST
ENDLIST
ENDLIST
ENDLIST
PROPLIST:
NAME:"ID",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:"10,3,0,52,0,45"
ENDLIST
NAME:"TRANSACTION", INTEGER:1993
ENDLIST
NAME:"CMD",
PROPLIST:
NAME:"MAILBOX",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:"10,1,0,52,0,45"
ENDLIST
NAME:"NET", NAME:"ARPA"
NAME:"HOST", NAME:"ISIE"
NAME:"PORT", NAME:"45"
NAME:"USER", NAME:"*MPM*"
ENDLIST
NAME:"OPERATION", NAME:"ACKNOWLEDGE"
NAME:"REFERENCE",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:"10,1,0,52,0,45"
ENDLIST
NAME:"TRANSACTION", INTEGER:37
ENDLIST
NAME:"ADDRESS",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:"10,3,0,52,0,45"
ENDLIST
NAME:"USER", NAME:"Cohen"
ENDLIST
NAME:"TYPE-OF-SERVICE", NAME:"REGULAR"
NAME:"ERROR-CLASS", INDEX:0
NAME:"ERROR-STRING", NAME:"Ok"
NAME:"TRAIL",
LIST:
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:"10,1,0,52,0,45"
ENDLIST
NAME:"DATE", NAME:"1979-03-29-11:47.5-08:00"
NAME:"ACTION", NAME:"ORIGIN"
ENDLIST
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:"10,2,0,52,0,45"
ENDLIST
NAME:"DATE", NAME:"1979-03-29-11:48-08:00"
NAME:"ACTION", NAME:"RELAY"
ENDLIST
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:"10,3,0,52,0,45"
ENDLIST
NAME:"DATE", NAME:"1979-03-29-11:51.567-08:00"
NAME:"ACTION", NAME:"DESTINATION"
ENDLIST
ENDLIST
NAME:"TRACE",
LIST:
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:"10,3,0,52,0,45"
ENDLIST
NAME:"DATE", NAME:"1979-03-29-11:52-08:00"
NAME:"ACTION", NAME:"ORIGIN"
ENDLIST
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:"10,2,0,52,0,45"
ENDLIST
NAME:"DATE", NAME:"1979-03-29-11:52.345-08:00"
NAME:"ACTION", NAME:"RELAY"
ENDLIST
ENDLIST
ENDLIST
ENDLIST
7. SPECIFICATION SUMMARY
or
answer: BOOLEAN
city: NAME
command: PROPLIST
NAME: "MAILBOX", <mailbox>
NAME: "OPERATION", <operation>
<<arguments>>
NAME: "ERROR-CLASS", <error-class> (only in replies)
NAME: "ERROR-STRING", <error-string> (only in replies)
NAME: "TRACE", <trace>
country: NAME
document: <<document>>
error-class: INDEX
error-string: NAME
host: NAME
handling-stamp: PROPLIST
NAME: "MPM", <mpm-identifier>
NAME: "DATE", <date>
NAME: "ACTION", <action>
identification: LIST
NAME: "MPM", <mpm-identifier>
NAME: "TRANSACTION", <transaction-number>
internet-address: NAME
message: PROPLIST
NAME: "ID", <identification>
NAME: "CMD", <command>
NAME: "DOC", <document> (only in deliver)
or
net: NAME
organization: NAME
phone-number: NAME
port: NAME
state: NAME
trace: LIST
<handling-stamp>
...
trail: LIST
<handling-stamp>
...
transaction-number: INTEGER
user: NAME
x121-address: NAME
zip-code: NAME
PROPLIST:
NAME:"ID",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:<internet-address>
ENDLIST
NAME:"TRANSACTION", INTEGER:<transaction-number>
ENDLIST
NAME:"CMD",
PROPLIST:
NAME:"MAILBOX",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:<internet-address>
ENDLIST
NAME:"NET", NAME:<net>
NAME:"HOST", NAME:<host>
NAME:"PORT", NAME:<port>
NAME:"USER", NAME:<user>
NAME:"ORG", NAME:<organization>
NAME:"CITY", NAME:<city>
NAME:"STATE", NAME:<state>
NAME:"COUNTRY", NAME:<country>
NAME:"ZIP", NAME:<zip-code>
NAME:"PHONE", NAME:<phone-number>
<<other-items>>
ENDLIST
NAME:"OPERATION", NAME:"DELIVER"
NAME:"TYPE-OF-SERVICE", NAME:<type-of-service>
NAME:"TRACE",
LIST:
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:<internet-address>
ENDLIST
NAME:"DATE", NAME:<date>
NAME:"ACTION", NAME:<action>
ENDLIST
...
ENDLIST
ENDLIST
NAME:"DOC", <<document>>
ENDLIST
PROPLIST:
NAME:"ID",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:<internet-address>
ENDLIST
NAME:"TRANSACTION", INTEGER:<transaction-number>
ENDLIST
NAME:"CMD",
PROPLIST:
NAME:"MAILBOX",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:<internet-address>
ENDLIST
NAME:"USER", NAME:"*MPM*"
NAME:"NET", NAME:<net>
NAME:"PORT", NAME:<port>
NAME:"HOST", NAME:<host>
ENDLIST
NAME:"OPERATION", NAME:"ACKNOWLEDGE"
NAME:"REFERENCE",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:<internet-address>
ENDLIST
NAME:"TRANSACTION", INTEGER:<transaction-number>
ENDLIST
NAME:"ADDRESS",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:<internet-address>
ENDLIST
NAME:"USER", NAME:<user>
ENDLIST
NAME:"TYPE-OF-SERVICE", NAME:<type-of-service>
NAME:"ERROR-CLASS", INDEX:<error-class>
NAME:"ERROR-STRING", NAME:<error-string>
NAME:"TRAIL",
LIST:
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:<internet-address>
ENDLIST
NAME:"DATE", NAME:<date>
NAME:"ACTION", NAME:<action>
ENDLIST
...
ENDLIST
NAME:"TRACE",
LIST:
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:<internet-address>
ENDLIST
NAME:"DATE", NAME:<date>
NAME:"ACTION", NAME:<action>
ENDLIST
...
ENDLIST
ENDLIST
ENDLIST
PROPLIST:
NAME:"ID",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:<internet-address>
ENDLIST
NAME:"TRANSACTION", INTEGER:<transaction-number>
ENDLIST
NAME:"CMD",
PROPLIST:
NAME:"MAILBOX",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:<internet-address>
ENDLIST
NAME:"NET", NAME:<net>
NAME:"HOST", NAME:<host>
NAME:"PORT", NAME:<port>
NAME:"USER", NAME:<user>
NAME:"ORG", NAME:<organization>
NAME:"CITY", NAME:<city>
NAME:"STATE", NAME:<state>
NAME:"COUNTRY", NAME:<country>
NAME:"ZIP", NAME:<zip-code>
NAME:"PHONE", NAME:<phone-number>
<<other-items>>
ENDLIST
NAME:"OPERATION", NAME:"PROBE"
NAME:"TRACE",
LIST:
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:<internet-address>
ENDLIST
NAME:"DATE", NAME:<date>
NAME:"ACTION", NAME:<action>
ENDLIST
...
ENDLIST
ENDLIST
ENDLIST
PROPLIST:
NAME:"ID",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:<internet-address>
ENDLIST
NAME:"TRANSACTION", INTEGER:<transaction-number>
ENDLIST
NAME:"CMD",
PROPLIST:
NAME:"MAILBOX",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:<internet-address>
ENDLIST
NAME:"NET", NAME:<net>
NAME:"HOST", NAME:<host>
NAME:"PORT", NAME:<port>
NAME:"USER", NAME:"*MPM*"
ENDLIST
NAME:"OPERATION", NAME:"RESPONSE"
NAME:"REFERENCE",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:<internet-address>
ENDLIST
NAME:"TRANSACTION", INTEGER:<transaction-number>
ENDLIST
NAME:"ADDRESS",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:<internet-address>
ENDLIST
NAME:"USER", NAME:<user>
ENDLIST
NAME:"ERROR-CLASS", INDEX:<error-class>
NAME:"ERROR-STRING", NAME:<error-string>
NAME:"TRAIL",
LIST:
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:<internet-address>
ENDLIST
NAME:"DATE", NAME:<date>
NAME:"ACTION", NAME:<action>
ENDLIST
...
ENDLIST
NAME:"TRACE",
LIST:
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:<internet-address>
ENDLIST
NAME:"DATE", NAME:<date>
NAME:"ACTION", NAME:<action>
ENDLIST
...
ENDLIST
ENDLIST
ENDLIST
PROPLIST:
NAME:"ID",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:<internet-address>
ENDLIST
NAME:"TRANSACTION", INTEGER:<transaction-number>
ENDLIST
NAME:"CMD",
PROPLIST:
NAME:"MAILBOX",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:<internet-address>
ENDLIST
NAME:"NET", NAME:<net>
NAME:"HOST", NAME:<host>
NAME:"PORT", NAME:<port>
NAME:"USER", NAME:<user>
NAME:"ORG", NAME:<organization>
NAME:"CITY", NAME:<city>
NAME:"STATE", NAME:<state>
NAME:"COUNTRY", NAME:<country>
NAME:"ZIP", NAME:<zip-code>
NAME:"PHONE", NAME:<phone-number>
<<other-items>>
ENDLIST
NAME:"OPERATION", NAME:"CANCEL"
NAME:"REFERENCE",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:<internet-address>
ENDLIST
NAME:"TRANSACTION", INTEGER:<transaction-number>
ENDLIST
NAME:"TRACE",
LIST:
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:<internet-address>
ENDLIST
NAME:"DATE", NAME:<date>
NAME:"ACTION", NAME:<action>
ENDLIST
...
ENDLIST
ENDLIST
ENDLIST
PROPLIST:
NAME:"ID",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:<internet-address>
ENDLIST
NAME:"TRANSACTION", INTEGER:<transaction-number>
ENDLIST
NAME:"CMD",
PROPLIST:
NAME:"MAILBOX",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:<internet-address>
ENDLIST
NAME:"NET", NAME:<net>
NAME:"HOST", NAME:<host>
NAME:"PORT", NAME:<port>
NAME:"USER", NAME:"*MPM*"
ENDLIST
NAME:"OPERATION", NAME:"CANCELED"
NAME:"REFERENCE",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", NAME:<internet-address>
ENDLIST
NAME:"TRANSACTION", INTEGER:<transaction-number>
ENDLIST
NAME:"ADDRESS",
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:<internet-address>
ENDLIST
NAME:"USER", NAME:<user>
ENDLIST
NAME:"ERROR-CLASS", INDEX:<error-class>
NAME:"ERROR-STRING", NAME:<error-string>
NAME:"TRAIL",
LIST:
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:<internet-address>
ENDLIST
NAME:"DATE", NAME:<date>
NAME:"ACTION", NAME:<action>
ENDLIST
...
ENDLIST
NAME:"TRACE",
LIST:
PROPLIST:
NAME:"MPM",
PROPLIST:
NAME:"IA", INTEGER:<internet-address>
ENDLIST
NAME:"DATE", NAME:<date>
NAME:"ACTION", NAME:<action>
ENDLIST
...
ENDLIST
ENDLIST
ENDLIST
0 NOP CODE(1) 1
2 BOOLEAN CODE(1),TRUE-FALSE(1) 2
3 INDEX CODE(1),INDEX(2) 3
4 INTEGER CODE(1),INTEGER(4) 5
11 ENDLIST CODE(1) 1
12 S-TAG CODE(1),INDEX(2) 3
13 S-REF CODE(1),INDEX(2) 3
14 ENCRYPT CODE(1),COUNT(3),ALG-ID(1),
KEY-ID(2),DATA(C-3) C+4
REFERENCES
[6] Neigus, N., "File Transfer Protocol for the ARPA Network,"
RFC 542, NIC 17759, SRI International, August 1973.
[10] Barber, D., and J. Laws, "A Basic Mail Scheme for EIN," INWG 192,
February 1979.
[14] Thomas, R., "Providing Mail Services for NSW Users," BBN NSW
Working Note 24, Bolt Beranek and Newman, October 1978.
[15] White, J., "A Proposed Mail Protocol," RFC 524, NIC 17140, SRI
International, 13 June 1973.
[31] Cohen, D., "On Holy Wars and a Plea for Peace," IEN 137,
USC/Information Sciences Institute, 1 April 1980.
[34] Postel, J., "Out-of-Net Host Address for Mail," RFC 754,
USC/Information Sciences Institute, April 1979.
[38] Rivest, R., A. Shamir, and L. Adleman, "A Method for Obtaining
Digital Signatures and Public-Key Cryptosystems" Communications
of the ACM, Vol. 21, Number 2, February 1978.