EnvelopeFormat1.cr
Copyright Ó 1987, 1991 by Xerox Corporation. All rights reserved.
MChen, 09-Apr-87 10:32:32 PDT
Bill Jackson (bj) May 13, 1987 2:03:01 am PDT
Doug Terry, November 9, 1988 5:27:59 pm PST
Wes Irish, December 21, 1988 10:33:41 am PST
The complete declaration of the Mail Transport Envelope Format protocol is given below.
EnvelopeFormat: PROGRAM 1517 VERSION 1 = BEGIN
DEPENDS UPON
MailTransport (17) VERSION 5,
Time (15) VERSION 2;
Types and Constants
Time: TYPE = Time.Time;
RName: TYPE = MailTransport.RName;
RecipientList: TYPE = MailTransport.RecipientList;
Envelope: TYPE = MailTransport.Envelope;
EnvelopeItemType: TYPE = MailTransport.EnvelopeItemType;
DeliveredRecipient: TYPE = RECORD [
recipient: MailTransport.Recipient,
when: Time
];
NonDeliveredRecipient: TYPE = RECORD [
recipient: MailTransport.Recipient,
reason: Reason
];
Reason: TYPE = { noSuchRecipient(0), noMailboxForRecipient(1), illegalName(2), timeout(3), reportNotAllowed(4), messageTooLong(5), ambiguousRName(6), illegalCharacters(7), unsupportedBodyparts(8), unsupportedContentsType(9), transientProblem(10), contentSyntaxError(11), tooManyRecipients(12), protocolViolation(13), x400PragmaticConstraintViolation(14), x400NoBilateralAgreement(15), accessRightsInsufficientForDL(16), other(17) };
if corrective action can be taken by remailing, 'transientProblem" is used.
EnvelopeItemTypes
postmark: EnvelopeItemType = 0; -- Time and site of posting.
Postmark: TYPE = RECORD [
postedAt: RName,
time: Time.Time
];
messageID: EnvelopeItemType = 1;
MessageID: TYPE = MailTransport.MessageID;
Unique ID within the mail system for this message.
contentsType: EnvelopeItemType=2; -- indicates format of message content.
ContentsType: TYPE = MailTransport.ContentsType;
indicates the format of the contents of a message. Most messages will be of type ctStandardMessage.
ctNull: ContentsType = 37777777777B; -- no content
ctStandardMessage: ContentsType = 4;
ctReport: ContentsType = 6; -- A Mail Service-generated delivery or non-delivery report.
tableOfContents: EnvelopeItemType = 3;
TableOfContents: TYPE = SEQUENCE 500 OF TOCEntry;
There can be up to 500 body parts in a message.
TOCEntry: TYPE = RECORD [
type: MailTransport.BodyPartType,
sizeInBytes: LONG CARDINAL
];
nullTableOfContents: TableOfContents = RECORD []; -- Sirocco can't hack SEQUENCE[0] constructs
contentsSize: EnvelopeItemType=4; -- size of message content in bytes
ContentsSize: TYPE = LONG CARDINAL;
originator: EnvelopeItemType = 5; -- authenticated sender of the message
Originator: TYPE = RName;
report: EnvelopeItemType = 6;
Report: TYPE = RECORD [
originalEnvelope: Envelope,
fateOfThisReport: Fate,
reportType: RepType
];
FateKind: TYPE = { delivered(0), notDelivered(1) };
Fate: TYPE = CHOICE FateKind OF {
delivered => DelType,
notDelivered => NonDelType
};
DelType: TYPE = {contentsTruncated(0), noProblem(1)};
NonDelType: TYPE = RECORD [
reason: Reason,
reportCreationPostmark: Postmark
];
RepTypeKind: TYPE = { dlMember(0), other(1) };
RepType: TYPE = CHOICE RepTypeKind OF {
dlMember => DLMem,
other => OtherRep
};
DLMem: TYPE = RECORD [
dlName: RName,
invalidDLRecipients: InvalRecip
];
InvalRecip: TYPE = SEQUENCE OF NonDeliveredRecipient;
OtherRep: TYPE = RECORD [
succeeded: SucList,
failed: FailList
];
SucList: TYPE = SEQUENCE OF DeliveredRecipient;
FailList: TYPE = SEQUENCE OF NonDeliveredRecipient;
returnToName: EnvelopeItemType = 7;
ReturnToName: TYPE = RName; -- default = originator
Generated and used by the Mail System. This information is not interesting to users
previousRecipients: EnvelopeItemType = 8;
PreviousRecipients: TYPE = RecipientList;
Generated and used by the mail system. This.information is not interesting to users.
gatewayPostmark: EnvelopeItemType = 9;
GatewayPostmark: TYPE = Postmark;
addressChangeNotice: EnvelopeItemType = 10;
AddressChangeNotice: TYPE = RName; -- original recipient name
Set on messages forwarded by the Mail Service.
transportOptions: EnvelopeItemType = 11; -- default = all TRUE
TransportOptions: TYPE = RECORD [
returnOfContents: BOOLEAN,
alternateRecipientAllowed: BOOLEAN
];
x400SpecificReportInformation: EnvelopeItemType = 12;
X400SpecificReportInformation: TYPE = SEQUENCE 4 OF X400ReportItem;
X400ReportItem: TYPE = SEQUENCE OF UNSPECIFIED;
This envelope item contains the X.400 mpduIdentifier, uaContentID, the PerRecipientFlag plus ExtensionIdentifier of each recipient and the TraceInformation of messages originating in the X.400 mail system. The mpduIdentifier, the uaContentID and the PerRecipientFlag plus ExtensionIdentifier for each recipient are always present. The TraceInformation is only present if an X.400 audit and confirmed report was requested. This information is simply reflected by the Xerox mail system in reports to the X.400 mail system, and users should not be confronted with it.
otherRecipients: EnvelopeItemType =13;
OtherRecipients: TYPE = RecipientList; -- when present, contains all the original recipients
priority: EnvelopeItemType = 14;
Priority: TYPE = {nonUrgent(0), normal(1), urgent(2)}; -- If absent, defaults to normal.
Widened the field out (WIrish). DSBU (Kathy Riggle) says she thinks that they use LAST[CARDINAL] to indicate unspecified. We DO see this value from servers/clients.
Sirocco can't seem to handle LAST[CARDINAL] or LAST[CARD16] so I had to use 65535.
Priority: TYPE = {nonUrgent(0), normal(1), urgent(2), unspecified(65535)};
converted: EnvelopeItemType = 15;
Converted: TYPE = SEQUENCE 10 OF ConvertedItem;
Indicates the conversions a message has been through.
ConvertedItem: TYPE = {ia5TextToTeletex(0), teletexToTelex(1), teletexToIA5Text(2), telexToTeletex(3)};
authenticationLevelOfSender: EnvelopeItemType = 16;
AuthenticationLevelOfSender: TYPE = {strong(0), simple(1), foreign(2)};
Widened the field out to avoid problems (WIrish). Contrary to the gray book this seems to be an optional envelope item...
Sirocco can't seem to handle LAST[CARDINAL] or LAST[CARD16] so I had to use 65535.
AuthenticationLevelOfSender: TYPE = {strong(0), simple(1), foreign(2), unknown(65535)};
Indicates the level of authentication with which the sender has been authenticated to the Xerox mail system.
Interpretation
InterpretedType: TYPE = { postmark(0), messageID(1), contentsType(2), tableOfContents(3), contentsSize(4), originator(5), report(6), returnToName(7), previousRecipients(8), gatewayPostmark(9), addressChangeNotice(10), transportOptions(11), x400SpecificReportInformation(12), otherRecipients(13), priority(14), converted(15), unauthenticatedSender(16) };
IndicatorArray: TYPE = ARRAY InterpretedType OF BOOLEAN;
InterpretedValues: TYPE = RECORD [
isPresent: IndicatorArray,
postmark: Postmark, -- (0)
messageID: MessageID, -- (1)
contentsType: ContentsType, -- (2)
tableOfContents: TableOfContents, -- (3)
contentsSize: ContentsSize, -- (4)
originator: Originator, -- (5)
report: Report, -- (6)
returnToName: ReturnToName, -- (7)
previousRecipients: PreviousRecipients, -- (8)
gatewayPostmark: GatewayPostmark, -- (9)
addressChangeNotice: AddressChangeNotice, -- (10)
transportOptions: TransportOptions, -- (11)
x400SpecificReportInformation: X400SpecificReportInformation, -- (12)
otherRecipients: OtherRecipients, -- (13)
priority: Priority, -- (14)
converted: Converted, -- (15)
unauthenticatedSender: UnauthenticatedSender -- (16)
];
END.