Internet DRAFT - draft-ernst-msgmib
draft-ernst-msgmib
MADMAN Working Group Bruce Ernst [bruce_ernst@lotus.com]
INTERNET-DRAFT Lotus Development Corporation
draft-ernst-msgmib-00.txt Gordon Jones [gbjones@mitre.org]
MITRE Corporation
Jonathan Weintraub
Electronic Data Systems, Inc.
March 1998
Message Tracking MIB
Status of this Memo
This document is an Internet Draft. 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. Internet Drafts may be updated, replaced, or obsoleted by
other documents at any time. It is not appropriate to use Internet
Drafts as reference material or to cite them other than as a "working
draft" or "work in progress."
To learn the current status of any Internet-Draft, please check the
1id-abstracts.txt listing contained in the Internet-Drafts Shadow
Directories on ds.internic.net, nic.nordu.net, ftp.nisc.sri.com, or
munnari.oz.au.
Abstract
This document defines a message tracking Management Information Base
(MIB) for electronic messaging management. Message tracking is the
ability to find out, after the fact, the path that a particular message
took through the messaging system and the current status of that message.
Expires: September 1, 1998 [Page 1]
Internet Draft March 1998
1. The SNMP Network Management Framework.
The major components of the SNMP Network Management framework are
described in the documents listed below.
o RFC 1902 [1] defines the Structure of Management Information
(SMI), the mechanisms used for describing and naming objects
for the purpose of management.
o STD 17, RFC 1213 [2] defines MIB-II, the core set of managed
objects (MO) for the Internet suite of protocols.
o RFC 1905 [3] defines the protocol used for network access to
managed objects.
The framework is adaptable/extensible by defining new MIBs to suit the
requirements of specific applications/protocols/situations.
Managed objects are accessed via a virtual information store, the MIB.
Objects in the MIB are defined using the subset of Abstract Syntax
Notation One (ASN.1) defined in the SMI. In particular, each object type
is named by an OBJECT IDENTIFIER, which is an administratively assigned
name. The object type together with an object instance serves to
uniquely identify a specific instantiation of the object. For human
convenience, often a textual string, termed the descriptor, is used to
refer to the object type.
2. Message Tracking
Message tracking refers, in its simplest form, to determining the path
a message
has taken and it's current location. This capability is analogous to
the service
provided by carriers of conventional paper mail - the ability to
quickly locate
where a package is, and to determine whether or not the package has
been
delivered to its destination. This document discusses a specific
SNMP-based
per-message mechanism to query the messaging system to perform message
tracking. For a detailed definition of message tracking, and the need
for message
tracking, refer to [MODEL].
Expires: September 1, 1998 [Page 2]
Internet Draft March 1998
3. MIB Data to Support Message Tracking
This MIB contains the syntax for message tracking via SNMP. The
attributes
defined are identical to those defined for message tracking via e-mail,
except
for those attributes that are required purely to enable SNMP-specific
semantics.
When making use of SNMP, it is expected that the following mode of
operation
will be used. The entity acting in the manager role issues one or more
"SET"
operations filling in a row in a request table. The variables set in
the request
table together comprise a message tracking query. The entity acting in
the agent
role reads the values set in the request table, queries the local
message store
(or usage logs), and returns information regarding messages that satify
the query
criteria in a response table. The entity acting as the manager then
reads the
response table and notifies an administrator or performs additional
queries as
required.
In the message tracking MIB that follows, there are three tables:
1. the mtaInformationTable
2. the msgTrackRequestTable
3. the msgTrackResponseTable
The mtaInformationTable contains one entry for each MTA that is
monitored
by this agent. The table contains information about the MTA as a
whole, such
as: the name of the MTA and the length of time that the MTA has been
recording
information. This last item is important to know, since if the MTA
indicates that
it only has information about messages that have passed through it in
the last two
days, and the administrator wishes to track a message that was sent
four days ago,
then there will be no need to attempt to track the message through this
MTA.
The msgTrackRequestTable is used by a manager to specify a query to be
made
of the agent. It is not required that the manager have any knowledge
of a unique
message identifier, but knowledge of some information pertaining to the
message
in question is recommended. Since the query information may be matched
by a
number of potential matches, it is possible to find out information
about several
different messages.
The msgTrackResponseTable is a parallel to the msgTrackRequestTable in
that it
holds the response(s) to the queries posed in the msgTrackRequestTable.
The
manager reads this table to retrieve information about the messages
that match
the input query information. The two tables share a common index to
facilitate
navigation between them.
Expires: September 1, 1998 [Page 3]
Internet Draft March 1998
MESSAGE-TRACKING-MIB DEFINITIONS ::= BEGIN
IMPORTS
OBJECT-TYPE, MODULE-IDENTITY, Counter32
FROM SNMPv2-SMI
DisplayString, TimeInterval, DateAndTime
FROM SNMPv2-TC;
-- Note that in SNMPv1 the IMPORTS section should look like the
following:
-- IMPORTS
-- OBJECT-TYPE, enterprises, Counter, Gauge, TimeTicks
-- FROM RFC1155-SMI
-- DisplayString
-- FROM RFC1213-MIB;
-- OBJECT IDENTIFIERS
MsgTracking OBJECT IDENTIFIER ::= { experimental 73 2 }
-- MODULE IDENTIFICATION use in V2 version only
mta-message-track MODULE-IDENTITY
LAST-UPDATED "9704110000Z"
ORGANIZATION "IETF"
CONTACT-INFO
"Gordon Jones
Postal: 1820 Dolly Madison Boulevard
Mc Lean, VA 22102-3481
Tel: +1 703 883 7670
Fax: +1 703 883 7670
E-mail: gbjones@mitre.org"
DESCRIPTION
"The MIB module describing message tracking"
::= { MsgTracking 1 }
-- Note that the MODULE-IDENTITY macro does not exist in SNMP version 1,
-- for a V1 implementation, replace the above macro with the following
line :
-- mta-message-track OBJECT IDENTIFIER ::= {MsgTracking 1 }
-- Note that the textual conventions DateAndTime and TimeInterval
-- do not exist in SNMPv1, for a V1 implementation include the following
-- 2 lines:
-- DateAndTime ::= DisplayString
-- TimeInterval ::= INTEGER (0..2147483647)
Expires: September 1, 1998 [Page 4]
Internet Draft March 1998
-- Define the NameForm textual convention for originator and recipient
-- names in this MIB
NameForm ::= INTEGER {
freeForm(1),
x400(2),
smtp(3)
}
-- Define the DispositionStatus textual convention which indicates the
-- disposition of a message by the MTA for a particular recipient.
Values
-- are:
-- unknown - The disposition of the message could not be determined
-- transferred - The message was forwarded to another MTA for
-- delivery without name or content transformation.
-- delivered - The message was delivered to the intended recipient.
-- non-delivered - The message could not be delivered to the intended
-- recipient.
-- redirected - The message was forwarded to another MTA for
-- delivery. The recipient name and/or messageId
-- may have changed as a result of this process.
-- dlist-expanded - The intended recipient was a distribution list
-- which was expanded by the MTA.
-- in-queue - The message for this recipient is currently being
-- processed by the MTA.
DispositionStatus ::= INTEGER {
unknown(1),
transferred(2),
delivered(3),
non-delivered(4),
redirected(5),
dlist-expanded(6),
in-queue(7)
}
-- Define the MsgType textual convention. Values are:
--
-- data
-- status
-- probe
MsgType ::= INTEGER {
any(1),
data(2),
status(3),
probe(4)
}
Expires: September 1, 1998 [Page 5]
Internet Draft March 1998
-- How this mib works :
-- Most message tracking MIBs operate on the presupposition that the
manager
-- entering a query knows the unique message ID for the message being
tracked.
-- In practice, this is often not the case. This MIB allows for a
2-step
-- query process - find the appropriate message, then track it.
-- +==============+
-- | Manager | = 1 => +=====================================+
-- +==============+ = 6 => | msgTrackRequestTable |
-- ^ +=====================================+
-- | |
-- | 2 +=========+
-- | + => | Agent |
-- | +=========+
-- 5 |
+======================+
-- | + 3 => | Message
Store |
-- | += 4 ==========
+======================+
-- | |
-- | v
-- | +========================================+
-- ===============> | msgTrackResponseTable |
-- +========================================+
--
-- STEP 1:
-- Using the index obtained from 'msgTrackNextRequestIndex', a manager
-- creates a conceptual row in the 'msgTrackRequestTable', filling in
-- as many message attributes as are known. The manager also specifies
-- in 'reqMaxResponses', the maximim number of possible 'hits' for an
-- underspecified query.
-- STEP 2:
-- When the agent detects a new conceptual row in
'msgTrackRequestTable',
-- it forms a query to be executed against the message store(s).
-- STEP 3:
-- The agent issues the query against the message store and receives
some
-- response(s).
-- STEP 4:
-- The agent then transfers up to 'reqMaxResponses' possible responses
-- to newly created conceptual rows in the 'msgTrackResponseTable'. The
agent
-- then sets the value of 'reqResponseStatus' in the
'msgTrackRequestTable'
-- to notify the manager of the results of the query.
-- STEP 5:
-- The manager, having detected a change in 'reqResponseStatus', knows
that
-- the query is complete. It reads the potential responses from the
-- 'msgTrackResponseTable' and presents them to the end-user.
Expires: September 1, 1998 [Page 6]
Internet Draft March 1998
-- STEP 6:
-- The manager then instructs the agent to destroy the conceptual row
-- created in the 'msgTrackRequestTable', which causes the agent to
-- destroy the corresponding entries in the 'msgTrackResponseTable'.
-- STEP 7: (optional, not illustrated)
-- If the original query did not produce an adequate response, a new
entry
-- is created in the 'msgTrackRequestTable'. Entries in this table are
-- never reused!
--
--
-- MESSAGE TRACKING REQUEST TABLE:
mtaInformationTable OBJECT-TYPE
SYNTAX SEQUENCE OF mtaInformationEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The table holding information about the MTA being queried. A table
is used because there may be multiple MTAs at a single host."
::= { mta-message-track 1 }
mtaInformationEntry OBJECT-TYPE
SYNTAX mtaInformationEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"One entry in the table holding information about the MTA being
queried"
INDEX { mtaIndex }
::= { mtaInformationTable 1 }
mtaInformationEntry ::= SEQUENCE {
mtaIndex
INTEGER,
mtaName
DisplayString,
mtaMessagingType
DisplayString,
startTimeforRecordedInformation
DateAndTime,
alternativeAgent
DisplayString
}
Expires: September 1, 1998 [Page 7]
Internet Draft March 1998
mtaIndex OBJECT-TYPE
SYNTAX INTEGER (1..2147483647)
ACCESS read-only
STATUS current
DESCRIPTION
"The integer index into this table."
::= { mtaInformationEntry 1 }
mtaName OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS current
DESCRIPTION
"The name of the MTA described in this row of the table."
::= { mtaInformationEntry 2 }
mtaMessagingType OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS current
DESCRIPTION
" Common name of the messaging system of this MTA (e.g. X.400,
SMTP)."
::= { mtaInformationEntry 3 }
mtaStartTimeforRecordedInformation OBJECT-TYPE
SYNTAX DateAndTime
ACCESS read-only
STATUS current
DESCRIPTION
" The date/time of the oldest message tracking information
available from this MTA."
::= { mtaInformationEntry 4 }
mtaAlternativeAgent OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS current
DESCRIPTION
"The name (or address) of another agent that may have message
tracking information concerning this MTA."
::= { mtaInformationEntry 5 }
Expires: September 1, 1998 [Page 8]
Internet Draft March 1998
msgTrackNextRequestIndex OBJECT-TYPE
SYNTAX Counter32 -- Note that in SNMPv1, the syntax is simply
'Counter'
ACCESS read-only
STATUS current
DESCRIPTION
"The index that may be used by a manager (requestor) on a
'set-request' PDU
to create a new conceptual row in the msgTrackRequestTable table
(and
thereby issue a message tracking query)."
::= { mta-message-track 2 }
msgTrackRequestTable OBJECT-TYPE
SYNTAX SEQUENCE OF MsgTrackRequestEntry
ACCESS not-accessible
STATUS current
DESCRIPTION
"The table holding all active message tracking requests."
::= { mta-message-track 3 }
msgTrackRequestEntry OBJECT-TYPE
SYNTAX MsgTrackRequestEntry
ACCESS not-accessible
STATUS current
DESCRIPTION
"The entry associated with each request for message information."
INDEX { reqEntryIndex }
::= { msgTrackRequestTable 1 }
MsgTrackRequestEntry ::= SEQUENCE {
reqEntryIndex
INTEGER,
reqRowStatus
INTEGER,
reqResponseStatus
INTEGER,
reqMaxResponses
INTEGER,
reqUniqueMsgId
DisplayString,
reqInboundMsgId
DisplayString,
reqOutboundMsgId
DisplayString,
reqInboundOriginator
DisplayString,
Expires: September 1, 1998 [Page 9]
Internet Draft March 1998
reqOutboundOriginator
DisplayString,
reqOriginatorNameForm
NameForm,
reqInboundRecipient
DisplayString,
reqOutboundRecipient
DisplayString,
reqRecipientNameForm
NameForm,
reqSubject
DisplayString,
reqMinMsgSize
INTEGER,
reqMaxMsgSize
INTEGER,
reqEarliestArrivalTime
DateAndTime,
reqLatestArrivalTime
DateAndTime,
reqDispositionStatus
DispositionStatus,
reqFailureReason
DisplayString,
reqMsgType
MsgType,
reqCollapseRecipients
INTEGER
}
reqEntryIndex OBJECT-TYPE
SYNTAX INTEGER (1..2147483647)
ACCESS read-only
STATUS current
DESCRIPTION
"The integer index into the msgTrackRequestTable table."
::= { msgTrackRequestEntry 1 }
reqRowStatus OBJECT-TYPE
SYNTAX INTEGER {
active(1),
notInService(2),
notReady(3),
Expires: September 1, 1998 [Page 10]
Internet Draft March 1998
createAndGo(4),
createAndWait(5),
destroy(6)
}
ACCESS read-write
STATUS current
DESCRIPTION
"The status of the conceptual row. These are mapped to the same
values as
the RowStatus textual conversion in SNMPv2 and carry the same
semantics
with one exception: the exception is that when a manager
(requestor) sets the
value to destroy(6), this also has the added semantics of deleting
all
conceptual rows in the msgTrackResponseTable table whose
respEntryIndex
matches the reqEntryIndex of this conceptual row."
::= { msgTrackRequestEntry 2 }
reqResponseStatus OBJECT-TYPE
SYNTAX INTEGER {
unknown(1),
inProgress(2),
failedNoMatches(3),
failedInvalidQuery(4),
failedError(5),
successUnderqualified(6),
success(7)
}
ACCESS read-only
STATUS current
DESCRIPTION
"Indicates the status of this query and its responses in the
msgTrackResponseTable. Values are:
unknown - The status of this query is not known.
inProgress - The agent(responder) is still processing the request.
failedNoMatches - The query has been processed and has produced
no
matches.
failedInvalidQuery - The query could not be processed due to
invalid or
missing data in the original query.
FailedError - The query could not be processed due to an error in
the
agent(responder).
successUnderqualified - The query was successfully processed, but
the query
was found to be underqualified. That is, more reponses were found
than were
specified in reqMaxResponses. reqMaxResponses entries were returned
in the
msgTrackResponseTable.
success - The query succeeded, returning from 1 to reqMaxResponse
entries in the msgTrackResponseTable."
::= { msgTrackRequestEntry 3 }
Expires: September 1, 1998 [Page 11]
Internet Draft March 1998
reqMaxResponses OBJECT-TYPE
SYNTAX INTEGER (1..100)
ACCESS read-write
STATUS current
DESCRIPTION
"Specifies the largest number of responses to be returned in the
msgTrackResponseTable on an underspecified query (i.e. the
maximum value of respMsgIndex in the msgTrackResponseTable
conceptual row whose respEntryIndex matches the reqEntryIndex of
this
conceptual row)."
::= { msgTrackRequestEntry 4 }
reqUniqueMsgId OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-write
STATUS current
DESCRIPTION
"Specifies a unique message id used internally by the MTA for
identification
of a message. This form of the message id may or may not be
identical to the
inbound and/or outbound forms of the message id. If specified,
this may be
the only search criteria required. If the entire unique message id
is not
specified, prefix matching is assumed. Set to an empty (zero
length) string if
unknown or irrelevant to query."
::= { msgTrackRequestEntry 5 }
reqInboundMsgId OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-write
STATUS current
DESCRIPTION
"Specifies a unique message id as received by the MTA for
identification of
a message. This form of the message id may or may not be identical
to the
internal and/or outbound forms of the message id. If specified,
this may be the
only search criteria required. If the entire inbound message id is
not specified,
prefix matching is assumed. Set to an empty (zero length) string
if unknown or
irrelevant to query."
::= { msgTrackRequestEntry 6 }
reqOutboundMsgId OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-write
STATUS current
DESCRIPTION
Expires: September 1, 1998 [Page 12]
Internet Draft March 1998
"Specifies a unique message id as transmitted by the MTA for
identification
of a message. This form of the message id may or may not be
identical to the
internal and/or inbound forms of the message id. If specified,
this may be the
only search criteria required. If the entire outbound message id
is not
specified, prefix matching is assumed. Set to an empty (zero
length) string if
unknown or irrelevant to query."
::= { msgTrackRequestEntry 7 }
reqInboundOriginator OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-write
STATUS current
DESCRIPTION
"Identifies the originator of the message in its received form,
expressed in
string format. The style and format of this identifier varies
according to a
specific messaging technology. As a result of potentially disparate
messaging
technologies, this identifier is only guaranteed to be the name
known to the
end-user on the first MTA in the delivery sequence. If
reqOriginatorNameForm is set to 'x.400(2)' or 'smtp(3)', the
supplied
attributes will be considered in the match. Any attributes not
supplied will be
wildcarded. If reqOriginatorNameForm is set to 'freeForm(1)', this
value is
assumed to be a substring of the originator name. Set to an empty
(zero
length) string if unknown or irrelevant to query."
::= { msgTrackRequestEntry 8 }
reqOutboundOriginator OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-write
STATUS current
DESCRIPTION
"Identifies the originator of the message in its transmitted form,
expressed
in string format. The style and format of this identifier varies
according to a
specific messaging technology. As a result of potentially disparate
messaging
technologies this identifier is only guaranteed to be the name
known to the
end-user on the last MTA in the delivery sequence. If
reqOriginatorNameForm is set to 'x.400(2)' or 'smtp(3)', the
supplied attributes
will be considered in the match. Any attributes not supplied will
be
wildcarded. If reqOriginatorNameForm is set to 'freeForm(1)', this
value is
assumed to be a substring of the originator name. Set to an empty
(zero
length) string if unknown or irrelevant to query."
::= { msgTrackRequestEntry 9 }
reqOriginatorNameForm OBJECT-TYPE
SYNTAX NameForm
Expires: September 1, 1998 [Page 13]
Internet Draft March 1998
ACCESS read-write
STATUS current
DESCRIPTION
"Identifies the name form of originator strings supplied in the
reqInboundOriginator and/or reqOutboundOriginator values. This
value is
used by the agent to perform name form dependant parsing of these
values.
If neither of these strings are supplied, this name form value is
irrelevant to
the query. A value of 'any(1)' implies that no special parsing
should be
performed on the originator names supplied."
::= { msgTrackRequestEntry 10 }
reqInboundRecipient OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-write
STATUS current
DESCRIPTION
"Identifies one of the recipients (the one to be tracked) of the
message in
its received form, expressed in string format. The style and
format of this
identifier varies according to a specific messaging technology. As
a result
of potentially disparate messaging technologies, this identifier is
only
guaranteed to be the name an end-user knows the recipient by on
the first
MTA in the delivery sequence. If reqRecipientNameForm is set to
'x.400(2)'
or 'smtp(3)', the supplied attributes will be considered in the
match. Any
attributes not supplied will be wildcarded. If reqRecipientNameForm
is set to
'freeForm(1)', this value is assumed to be a substring of the
recipient name.
Set to an empty (zero length) string if unknown or irrelevant to
query."
::= { msgTrackRequestEntry 11 }
reqOutboundRecipient OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-write
STATUS current
DESCRIPTION
"Identifies one of the recipients (the one to be tracked) of the
message in
its transmitted form, expressed in string format. The style and
format of this
identifier varies according to a specific messaging technology. As
a result of
potentially disparate messaging technologies, this identifier is
only guaranteed
to be the name an end-user knows the recipient by on the last MTA
in the
delivery sequence. If reqRecipientNameForm is set to 'x.400(2)' or
'smtp(3)',
the supplied attributes will be considered in the match. Any
attributes not
supplied will be wildcarded. If reqRecipientNameForm is set to
'freeForm(1)',
this value is assumed to be a substring of the recipient name. Set
to an empty
(zero length) string if unknown or irrelevant to query."
::= { msgTrackRequestEntry 12 }
Expires: September 1, 1998 [Page 14]
Internet Draft March 1998
reqRecipientNameForm OBJECT-TYPE
SYNTAX NameForm
ACCESS read-write
STATUS current
DESCRIPTION
"Identifies the name form of recipient strings supplied in the
reqInboundRecipient and/or reqOutboundRecipient values. This value
is
used by the agent to perform name form dependant parsing of these
values.
If neither of these strings are supplied, this name form value is
irrelevant to
the query. A value of 'any(1)' implies that no special parsing
should be
performed on the recipient names supplied."
::= { msgTrackRequestEntry 13 }
reqSubject OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-write
STATUS current
DESCRIPTION
"Identifies a substring of the text of the 'Subject' attribute of
the message.
Since some messaging technologies make it difficult for an MTA to
preserve
this data, it may not be supported by all agents. Set to an empty
(zero length)
string if unknown or irrelevant to query."
::= { msgTrackRequestEntry 14 }
reqMinMsgSize OBJECT-TYPE
SYNTAX INTEGER (1..2147483647)
ACCESS read-write
STATUS current
DESCRIPTION
"Specifies the minimum size of a message to be tracked (content,
excluding
envelope), expressed in kilo-octets. Set both reqMinMsgSize and
reqMaxMsgSize to zero if message size is irrelevant to the query."
::= { msgTrackRequestEntry 15 }
reqMaxMsgSize OBJECT-TYPE
SYNTAX INTEGER (1..2147483647)
ACCESS read-write
STATUS current
DESCRIPTION
"Specifies the maximum size of a message to be tracked (content,
excluding
envelope), expressed in kilo-octets. Set both reqMinMsgSize and
reqMaxMsgSize to zero if message size is irrelevant to the query."
::= { msgTrackRequestEntry 16 }
Expires: September 1, 1998 [Page 15]
Internet Draft March 1998
reqEarliestArrivalTime OBJECT-TYPE
SYNTAX DateAndTime
ACCESS read-write
STATUS current
DESCRIPTION
"Specifies the earliest arrival time, at this MTA, for a message to
be
tracked. Set to an empty (zero length) string if unknown or
irrelevant to
query."
::= { msgTrackRequestEntry 17 }
reqLatestArrivalTime OBJECT-TYPE
SYNTAX DateAndTime
ACCESS read-write
STATUS current
DESCRIPTION
"Specifies the latest arrival time, at this MTA, for a message to be
tracked. Set to an empty (zero length) string if unknown or
irrelevant to
query."
::= { msgTrackRequestEntry 18 }
reqDispositionStatus OBJECT-TYPE
SYNTAX DispositionStatus
ACCESS read-write
STATUS current
DESCRIPTION
"Specifies the disposition status of the message for a particular
recipient. Set to 'unknown(1)' if unknown or irrelevant to the
query."
::= {msgTrackRequestEntry 19 }
reqMsgType OBJECT-TYPE
SYNTAX MsgType
ACCESS read-write
STATUS current
DESCRIPTION
"The type of message to be tracked.
Set to 'any(1)' if message type is unknown or irrelevant to the
query."
::= {msgTrackRequestEntry 20 }
reqCollapseRecipients OBJECT-TYPE
SYNTAX INTEGER {
false(1),
true(2)
}
ACCESS read-write
STATUS current
Expires: September 1, 1998 [Page 16]
Internet Draft March 1998
DESCRIPTION
"If a value of 'true(2)' is specified, a single msgTrackResponseEntry
will be created for each matching message regardless of the
number of recipients. If not specified or set to 'false(1)',
a msgTrackResponseEntry will be created for each matching message
and/or recipient. This variable may be used in the case of a
distribution list or a message with a large number of
recipients."
::= { msgTrackRequestEntry 21 }
reqFailureReason OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS current
DESCRIPTION
"A textual description of why a message tracking request failed.
This variable may be set by an agent when the reqResponseStatus
is set to either 'failedInvalidQuery(4)', or 'failedError(5)'."
::= {msgTrackRequestEntry 22 }
-- MESSAGE RESPONSE TABLE ( QUERY RESULTS )
msgTrackResponseTable OBJECT-TYPE
SYNTAX SEQUENCE OF MsgTrackResponseEntry
ACCESS not-accessible
STATUS current
DESCRIPTION
"The table holding the response to all active message tracking
requests."
::= { mta-message-track 4 }
msgTrackResponseEntry OBJECT-TYPE
SYNTAX MsgTrackResponseEntry
ACCESS not-accessible
STATUS current
DESCRIPTION
"The entry associated with each response to a request for message
information."
INDEX { respEntryIndex, respMsgIndex }
::= { msgTrackResponseTable 1 }
MsgTrackResponseEntry ::= SEQUENCE {
respEntryIndex
INTEGER,
respMsgIndex
INTEGER,
Expires: September 1, 1998 [Page 17]
Internet Draft March 1998
respDispositionStatus
DispositionStatus,
respDispositionTime
INTEGER,
respNextHopMta
DisplayString,
respPrevHopMta
DisplayString,
respNonDeliveryReason
DisplayString,
respMsgArrivalTime
DateAndTime,
respMsgSize
INTEGER,
respMsgPriority
DisplayString,
respUniqueMsgId
DisplayString,
respInboundMsgId
DisplayString,
respOutboundMsgId
DisplayString,
respInboundOriginator
DisplayString,
respOutboundOriginator
DisplayString,
respInboundRecipient
DisplayString,
respOutboundRecipient
DisplayString,
respSupplementalInformation
DisplayString,
respSubject
DisplayString,
respMsgType
MsgType
}
respEntryIndex OBJECT-TYPE
SYNTAX INTEGER (1..2147483647)
ACCESS read-only
STATUS current
DESCRIPTION
"The primary integer index into the msgTrackResponseTable table. It
matches
the value of reqEntryIndex for the original request. "
::= { msgTrackResponseEntry 1 }
Expires: September 1, 1998 [Page 18]
Internet Draft March 1998
respMsgIndex OBJECT-TYPE
SYNTAX INTEGER (1..2147483647)
ACCESS read-only
STATUS current
DESCRIPTION
"The secondary integer index into the msgTrackResponseTable table.
For each
value of respEntryIndex in the table, there may be multiple
conceptual rows
indexed by respMsgIndex, each denoting a possible response to the
tracking
query. The maximum number of entries should have an upper bound of
the
value of reqMaxResponses in the conceptual row of
msgTrackRequestTable
that represents the original query request. "
::= { msgTrackResponseEntry 2 }
respDispositionStatus OBJECT-TYPE
SYNTAX DispositionStatus
ACCESS read-only
STATUS current
DESCRIPTION
"Indicates the disposition of this message by this MTA for this
recipient."
::= { msgTrackResponseEntry 3 }
rspDispositionTime OBJECT-TYPE
SYNTAX DateAndTime
ACCESS read-only
STATUS current
DESCRIPTION
"Time at which this MTA disposed of this message for this recipient."
::= { msgTrackResponseEntry 4 }
respNextHopMta OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS current
DESCRIPTION
"Name of the MTA to which this message was sent. MADMAN-compliant
MTA's should be addressed in the form '(<host-id>::<mtaName>)'."
::= { msgTrackResponseEntry 5 }
respPrevHopMta OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS current
DESCRIPTION
Expires: September 1, 1998 [Page 19]
Internet Draft March 1998
"Name of the MTA from which this message was received. MADMAN-
compliant MTA's should be addressed in the form
'(<host-id>::<mtaName>)'."
::= { msgTrackResponseEntry 6 }
respNonDeliveryReason OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS current
DESCRIPTION
"A textual representation representing the reason for non-delivery to
this recipient. No attempt is made to normalize these non-delivered
reasons across systems, since this indicates a terminal condition."
::= { msgTrackResponseEntry 7 }
respMsgArrivalTime OBJECT-TYPE
SYNTAX DateAndTime
ACCESS read-only
STATUS current
DESCRIPTION
"Represents the time at which this message for this recipient
arrived at
this MTA."
::= { msgTrackResponseEntry 8 }
respMsgSize OBJECT-TYPE
SYNTAX INTEGER(1..2147483647)
ACCESS read-only
STATUS current
DESCRIPTION
"Size of the message in kilo-octets."
::= { msgTrackResponseEntry 9 }
respMsgPriority OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS current
DESCRIPTION
"Textual representation of the priority of the message. No attempt
is
made to normalize these values across disparate messaging
technologies."
::= { msgTrackResponseEntry 10 }
respUniqueMsgId OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS current
Expires: September 1, 1998 [Page 20]
Internet Draft March 1998
DESCRIPTION
"The unique message identifier that the MTA assigned internally
to the message."
::= { msgTrackResponseEntry 11 }
respInboundMsgId OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS current
DESCRIPTION
"The unique message identifier that the 'previous hop' MTA assigned
to the message. If the 'previous' MTA uses a different messaging
technology
or identifier scheme, this identifier serves to correlate the
message from
MTA to MTA. If the 'previous' MTA uses the same technology, this
value
is generally superfluous. If this is the first MTA in the delivery
sequence, or if the previous message id is unknown, this variable
is null-
valued."
::= { msgTrackResponseEntry 12 }
respOutboundMsgId OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS current
DESCRIPTION
"The unique message identifier that the 'next hop' MTA assigned
to the message. If the 'next' MTA uses a different messaging
technology
or identifier scheme, this identifier serves to correlate the
message from
MTA to MTA. If the 'next' MTA uses the same technology, this value
is generally superfluous. If this is the last MTA in the delivery
sequence,
or if the next hop message id is unknown, this variable is
null-valued."
::= { msgTrackResponseEntry 13 }
respInboundOriginator OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS current
DESCRIPTION
"Textual representation identifying the originator of the message as
it was
received from the 'previous hop' MTA. The style of this variable
varies
according to a specific messaging technology."
::= { msgTrackResponseEntry 14 }
respOutboundOriginator OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS current
Expires: September 1, 1998 [Page 21]
Internet Draft March 1998
DESCRIPTION
"Textual representation identifying the originator of the message as
it
was (or will be) presented to the 'next hop' MTA. The style of this
variable varies according to a specific messaging technology."
::= { msgTrackResponseEntry 15 }
respInboundRecipient OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS current
DESCRIPTION
"Textual representation identifying the recipient of the message as
it was
received from the 'previous hop' MTA. The style of this variable
varies
according to a specific messaging technology.."
::= { msgTrackResponseEntry 16 }
respOutboundRecipient OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS current
DESCRIPTION
"Textual representation identifying the recipient of the message as
it
was (or will be) presented to the 'next hop' MTA. The style of this
variable varies according to a specific messaging technology."
::= { msgTrackResponseEntry 17 }
respSupplementalInformation OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS current
DESCRIPTION
"Contains information provided by the agent to the manager that may
be
of use in identifying or tracking this message. No formal structure
for
this information is specified. Knowledge of the contents of this
field
is by bilateral agreement."
::= { msgTrackResponseEntry 18 }
respSubject OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS current
DESCRIPTION
"The full text of the subject of the tracked message"
::= { msgTrackResponseEntry 19 }
Expires: September 1, 1998 [Page 22]
Internet Draft March 1998
respMsgType OBJECT-TYPE
SYNTAX MsgType
ACCESS read-only
STATUS current
DESCRIPTION
"The type of the tracked message"
::= { msgTrackResponseEntry 20 }
-- CONFORMANCE INFORMATION
-- Used ONLY in V2 MIBs
messageTrackingConformance OBJECT IDENTIFIER ::= {
mta-message-track 5 }
messageTrackingGroups OBJECT IDENTIFIER ::= {
messageTrackingConformance 1 }
messageTrackingCompliances OBJECT IDENTIFIER ::= {
messageTrackingConformance 2 }
-- COMPLIANCE STATEMENTS
-- Used ONLY in V2 MIBs
limitedCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The basic levels of compliance for SNMPv2 entities that implement
this MIB
for message tracking requiring the knowledge of a message Id."
MODULE -- this module
MANDATORY-GROUPS { msgIdGroup }
::= { messageTrackingCompliances 1 }
basicCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The basic levels of compliance for SNMPv2 entities that implement
this MIB
for message tracking without requiring the knowledge of a message
Id."
MODULE -- this module
MANDATORY-GROUPS { msgIdGroup, basicGroup }
::= { messageTrackingCompliances 2 }
enhancedCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The basic levels of compliance for SNMPv2 entities that implement
this MIB
for message tracking without requiring the knowledge of a message
Id and
allowing an enhanced level of query capabilities."
MODULE -- this module
Expires: September 1, 1998 [Page 23]
Internet Draft March 1998
MANDATORY-GROUPS { msgIdGroup, basicGroup, enhancedGroup }
::= { messageTrackingCompliances 3 }
gatewayCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The basic levels of compliance for SNMPv2 entities that implement
this MIB
for message tracking across mta's that perform a gateway
function."
MODULE -- this module
MANDATORY-GROUPS { msgIdGroup, basicGroup, enhancedGroup,
gatewayGroup }
::= { messageTrackingCompliances 4 }
-- UNITS OF CONFORMANCE
-- Used ONLY in V2 MIBs
msgIdGroup OBJECT-GROUP
OBJECTS {
msgTrackNextRequestIndex, reqRowStatus,
reqResponseStatus, reqMaxResponses, reqUniqueMsgId,
reqFailureReason, respDispositionStatus, respDispositionTime,
respNonDeliveryReason, respMsgArrivalTime, respUniqueMsgId,
respInboundOriginator, respInboundRecipient
}
STATUS current
DESCRIPTION
" A collection of objects for tracking messages where the
messageId is
known with responses containing basic message information."
::= { messageTrackingGroups 1 }
basicGroup OBJECT-GROUP
OBJECTS {
reqInboundOriginator, reqInboundRecipient, reqOriginatorNameForm,
reqRecipientNameForm, reqEarliestArrivalTime,
reqLatestArrivalTime
}
STATUS current
DESCRIPTION
" A collection of objects for tracking messages where the
messageId is not
known
with responses containing basic message
information."
::= { messageTrackingGroups 2}
Expires: September 1, 1998 [Page 24]
Internet Draft March 1998
enhancedGroup OBJECT-GROUP
OBJECTS {
reqSubject, reqMinMsgSize, reqMaxMsgSize,
reqDispositionStatus, reqMsgType, reqCollapseRecipients,
respMsgSize, respMsgPriority,
respSupplementalInformation,
respSubject, respMsgType
}
STATUS current
DESCRIPTION
" A collection of objects for tracking messages where the messageId
is not
known with responses containing enhanced message information as
well as enhanced query capabilities."
::= { messageTrackingGroups 3}
gatewayGroup OBJECT-GROUP
OBJECTS {
reqInboundMsgId, reqOutboundMsgId,
reqOutboundOriginator,
reqOutboundRecipient, respNextHopMta, respPrevHopMta,
respInboundMsgId, respOutboundMsgId,
respOutboundOriginator,
respOutboundRecipient
}
STATUS current
DESCRIPTION
" A collection of object for tracking messages that have passed
through a
gateway mta."
::= { messageTrackingGroups 4}
END
4 Usages
A general model of message flow between MTAs has to be presented before
a MIB can be described. Generally speaking, message flow occurs in
three
steps. We use the term "MTA" loosely to refer to any processing entity
that is
responsible for message delivery:
(1) Messages are received by the MTA from user agents, message stores,
other
MTAs, and gateways.
(2) The "next hop" for the each message is determined. This is simply
the
destination the message is to be transmitted to; it may or may not be
the final
destination of the message. Next hop is established on a per-recipient
basis.
Next hop may be a User Agent, a Message Store, another MTA, or a
gateway.
Expires: September 1, 1998 [Page 25]
Internet Draft March 1998
(3) Information about the message and the next hop are written out to a
log in
some format. Messages are transmitted to the appropriate destination,
which
may be a user agent, message store, another MTA, or another gateway.
In terms of message tracking, the key step is step number 3, the
logging of
information. Once information about a message is written to a log, it
can be
subsequently queried by any number of means. It is the intent of this
specification to support the following general message tracking usages.
Tracking an Individual Message
It is often necessary for messaging operations to track down the
whereabouts
and/or history of an individual message managed object. This is
typically in
response to a particular user tracking request regarding a previously
sent
message. It might also be used by messaging operations to verify that
one or
more message paths are operating properly.
Entire Path or Current Status
For some inquiries, it is desired that the entire path taken by the
message to
date be discovered, including the current disposition of the message
(for one
or more recipients). For others, it is necessary only to discover the
current
disposition of the message. Note however that it may be necessary to
uncover
its entire path to date in order to determine its current disposition.
To discover a message's entire path, it will be necessary to query the
Management Agent (MA) of each MTA and/or gateway encountered by the
message, beginning with the originating MTA, to discover the status of
the
message from that MTA or gateway's perspective.
Dispositions include: Transferred-to another MTA or gateway, In-queue
within an MTA or gateway, Delivered, Non-delivered, Redirected, or
Dlist-
expanded. If a message was relayed to another MTA or gateway, then the
MA
of that MTA or gateway must be queried in turn. This must be repeated
until
the MTA or gateway which currently has responsibility for the message
is
reached.
To discover a message's current disposition, it might in fact be
necessary to track
the message's entire path, since typically the current status can only
be
discovered by a forward traversal through the message path.
Alternatively, to
minimize expense, the MA of any MTA/gateway which is estimated to be in
the
message path can be queried; if the message is shown to have reached
this
estimated point, then previous points in the path are irrelevant. Best
estimate
may therefore be the MA of the destination MTA, if known. Other
estimates
are made based on arbitrary intelligence which may be available.
Expires: September 1, 1998 [Page 26]
Internet Draft March 1998
For a message with multiple recipients, a different path/ disposition
may be
relevant for each recipient. Thus, message tracking queries must be
made to
discover the path/disposition of each recipient of the message, or for
each
recipient explicitly identified in the tracking request. For cases in
which multiple
recipient message copies are transferred-to the same MTA or gateway,
these
queries may be combined into a single query, for convenience.
Identifying Messages to Track
In some cases, the user may have retained some sort of a unique
identifier for
the message of interest. This will be true, for example, because an
explicit
trackability service was requested for the message, or because the
user logs all
outgoing messages. In such cases, a message query can be made simply
on the
basis of providing this unique identifier to the message tracking
system.
Optionally, this query can be bounded by:
o specific recipient(s) of interest;
o time range of interest;
o or other bounding information.
In other cases, the user may only know some general descriptive
information
about the message. For example, the user may know who originated it,
to
whom it was sent, and roughly what time of day it was submitted. In
such
cases, it will be necessary to provide descriptive information to the
message
tracking system and allow it to respond with a list of matching
messages which
it knows about, along with their unique identifiers.
In either case, the query can specify or imply a list of information
which it
wishes the query response to return to the requester.
Query Responses
The query response must then return the requested information, or
return an
indication as to why it cannot return the requested information. If the
returned
information includes an indication that the message has been further
relayed,
then a subsequent query must made to the transferred-to MTA or gateway.
Specific response information must be provided/implied in order to
allow for
the creation of subsequent queries. For example:
o the name of the transferred-to MTA or gateway
o the name of the MA of the transferred-to MTA or gateway
o the names/addresses of the recipient(s) of interest which have taken
this relay
path. Note that this may be a "redirected" recipient.
o If this response comes from a gateway, the translated versions of key
identification fields.
Expires: September 1, 1998 [Page 27]
Internet Draft March 1998
This subsequent query can optionally be formulated automatically.
See next section on "Automating Follow-up Queries" for details on
follow-up
query creation.
Automating Follow-up Queries
In order to support a fully automated path search, it is convenient and
powerful
for a management agent to be able to automatically make all of the
queries
required to discover the full path of an individual message. The MC can
accomplish this by creating an initial query, and then creating a
follow-on query
utilizing information returned by the initial query, and repeating this
process
until the current disposition of the message is discovered.
Follow-on queries will need to be generated on a per-recipient basis.
For cases
in which multiple recipient message copies were transferred-to the same
MTA
or gateway, these queries may be combined into a single query, for
efficiency.
In general, a follow-on query will need to:
o Be directed at the MA which corresponds to the MTA or gateway to
which
the message (copy) was relayed.
o Include the names/addresses of the recipient(s) which have taken this
relay
path. Note that this may be a "redirected" recipient.
o Include the same bounding criteria as did the initial query, with the
addition of the unique message identification if that information was
not
previously available.
o If the just-completed query was to a gateway, then the new translated
formats for the following will need to be used, if applicable:
- Message ID
- Recipient address
- Originator address
- Priority value
- Size.
Tracking Aggregates of Messages
It is sometimes desirable for messaging operations to be able to
determine
information about the history/status of all messages which match a
given set
of characteristics that have passed through their systems.
Identifying Messages to Track
In some cases, messaging operations may have retained some sort of a
unique
identifier for the messages of interest. More probably, messaging
operations is
simply interested in the set of messages which:
Expires: September 1, 1998 [Page 28]
Internet Draft March 1998
o went through its systems within a given time range, or
o were sent through its systems by a given originator, or
o were sent through its systems to a given recipient, or
o were sent through its systems with a given size or priority
In such cases, it will be necessary to provide descriptive information
to the
message tracking system and allow it to respond with information on all
of the
matching messages which it knows about. The query can specify or imply
a list
of information which it wishes the query response to return to the
requester.
Query Responses
The query response must then return the requested information, or
return an
indication as to why it cannot return the requested information.
4.1 Security
[TBD]
5. Future Considerations
A version of this information is also available in the Management
Information
Format (MIF) defined by the Desktop Management Task Force (DMTF).
As SNMP continues to evolve (e.g. SNMPv3),
the mechanisms in this document will leverage those new technologies.
6. Acknowledgements
This draft also incorporates the intellectual contributions of
Bruce Greenblatt
Niraj Jain
Sue Lebeck
Roger Mizumori
Edward Owens
Expires: September 1, 1998 [Page 31]
Internet Draft March 1998
7. References
[1] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Structure
of Management Information for version 2 of the Simple Network
Management Protocol (SNMPv2)", RFC 1902, SNMP Research,Inc.,
Hughes LAN Systems, Dover Beach Consulting, Inc., Carnegie Mellon
University, September 1996.
[2] McCloghrie, K., and M. Rose, Editors, "Management Information
Base for Network Management of TCP/IP-based internets: MIB-II",
STD 17, RFC 1213, Hughes LAN Systems, Performance Systems
International, March 1991.
[3] Case, J., McCloghrie, K., Rose, M., and S, Waldbusser, "Protocol
Operations for version 2 of the Simple Network Management
Protocol (SNMPv2)", RFC 1905, SNMP Research,Inc., Hughes LAN
Systems, Dover Beach Consulting, Inc., Carnegie Mellon
University, September 1996.
[MODEL] Case, J., McCloghrie, K., Rose, M., and S, Waldbusser,
"Protocol
Operations for version 2 of the Simple Network Management
Authors' Addresses
Bruce Ernst
Lotus Development Corporation
Phone: +1 610 251 3404
E-Mail: bruce_ernst@lotus.com
Gordon Jones
MITRE Corporation
1820 Dolley Madison Blvd.
McLean, VA 22102-3481
Phone: +1 703 883 7670
E-Mail: gbjones@mitre.org
Jonathan Weintraub
Electronic Data Systems, Inc.
+1 301 619 3101
Expires: September 1, 1998 [Page 32]