EnvelopeFormat: PROGRAM 1517 VERSION 1 = BEGIN DEPENDS UPON MailTransport (17) VERSION 5, Time (15) VERSION 2; 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) }; postmark: EnvelopeItemType = 0; -- Time and site of posting. Postmark: TYPE = RECORD [ postedAt: RName, time: Time.Time ]; messageID: EnvelopeItemType = 1; MessageID: TYPE = MailTransport.MessageID; contentsType: EnvelopeItemType=2; -- indicates format of message content. ContentsType: TYPE = MailTransport.ContentsType; 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; TOCEntry: TYPE = RECORD [ type: MailTransport.BodyPartType, sizeInBytes: LONG CARDINAL ]; 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 previousRecipients: EnvelopeItemType = 8; PreviousRecipients: TYPE = RecipientList; gatewayPostmark: EnvelopeItemType = 9; GatewayPostmark: TYPE = Postmark; addressChangeNotice: EnvelopeItemType = 10; AddressChangeNotice: TYPE = RName; -- original recipient name 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; otherRecipients: EnvelopeItemType =13; OtherRecipients: TYPE = RecipientList; -- when present, contains all the original recipients priority: EnvelopeItemType = 14; Priority: TYPE = {nonUrgent(0), normal(1), urgent(2), unspecified(65535)}; converted: EnvelopeItemType = 15; Converted: TYPE = SEQUENCE 10 OF ConvertedItem; ConvertedItem: TYPE = {ia5TextToTeletex(0), teletexToTelex(1), teletexToIA5Text(2), telexToTeletex(3)}; authenticationLevelOfSender: EnvelopeItemType = 16; AuthenticationLevelOfSender: TYPE = {strong(0), simple(1), foreign(2), unknown(65535)}; END. ’ 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. Types and Constants if corrective action can be taken by remailing, 'transientProblem" is used. EnvelopeItemTypes Unique ID within the mail system for this message. indicates the format of the contents of a message. Most messages will be of type ctStandardMessage. There can be up to 500 body parts in a message. nullTableOfContents: TableOfContents = RECORD []; -- Sirocco can't hack SEQUENCE[0] constructs Generated and used by the Mail System. This information is not interesting to users Generated and used by the mail system. This.information is not interesting to users. Set on messages forwarded by the Mail Service. 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. 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. Indicates the conversions a message has been through. 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. 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) ]; ΚΦ•NewlineDelimiter –(cedarcode) style™codešœ™Kšœ Οeœ7™BKšœ™K™-K™+K™,K™KšœW™W—K˜šΟnœΟkœŸœŸ˜.šŸœŸ˜ KšœŸœ˜Kšœ Ÿœ˜—headšΟz™KšœŸœ ˜K˜KšœŸœ˜"KšœŸœ˜2K˜Kšœ Ÿœ˜(KšœŸœ"˜8K˜šœŸœŸœ˜#K˜#K˜ K˜—K˜šœŸœŸœ˜&K˜#K˜K˜—K˜šœŸœ€˜°KšœK™K——š ™Kšœ Οc˜<šœ ŸœŸœ˜Kšœ˜Kšœ˜Kšœ˜K˜—K˜ šœ Ÿœ˜*Kšœ2™2—K˜Kšœ"‘'˜IšœŸœ˜0Kšœd™dšœ%‘ ˜2K˜$Kšœ‘<˜X——K˜K˜&šœŸœŸœŸœ ˜1Kšœ/™/šœ ŸœŸœ˜K˜!Kšœ ŸœŸ˜Kšœ˜—Kšœ'Ÿœ‘Πcs‘™^—K˜Kšœ"‘#˜EKšœŸœŸœŸœ˜#K˜Kšœ"‘&˜HKšœ Ÿœ ˜K˜K˜šœŸœŸœ˜K˜K˜K˜K˜Kšœ Ÿœ%˜3šœŸœŸœ Ÿœ˜!K˜K˜K˜—Kšœ Ÿœ)˜6šœ ŸœŸœ˜K˜K˜ K˜—Kšœ Ÿœ˜.šœ ŸœŸœ Ÿœ˜'K˜K˜K˜—šœŸœŸœ˜K˜K˜K˜—Kšœ ŸœŸœŸœ˜5šœ ŸœŸœ˜K˜K˜K˜—Kšœ ŸœŸœŸœ˜/Kšœ ŸœŸœŸœ˜6—K˜K˜#šœŸœ ‘˜5KšœT™T—K˜K˜)šœŸœ˜)KšœT™T—K˜K˜&KšœŸœ ˜!K˜K˜+šœŸœ ‘˜?Kšœ.™.—K˜Kšœ)‘˜>šœŸœŸœ˜!KšœŸœ˜KšœŸ˜"Kšœ˜—K˜K˜5šœŸœŸœŸœ˜CKš œŸœŸœŸœŸ œ˜/Jšœ΄™΄—K˜K˜&KšœŸœ‘5˜\K˜K˜!Kšœ Ÿœ)‘!™XKšœSŸœŸœF™¦Kšœ"Ÿœ(™RKšœ Ÿœ<˜JK˜K˜!Kšœ ŸœŸœŸœ˜/Kšœ5™5KšœŸœT˜gK˜J˜3JšœG™GKšœz™zKšœ"Ÿœ(™RšœŸœ6˜WJšœl™l——š ™KšœŸœΜ™αK™Kš œŸœŸœŸœŸœ™8K™šœŸœŸœ™"Kšœ™Kšœ‘™Kšœ‘™Kšœ‘™"Kšœ"‘™(Kšœ‘™"Kšœ‘™Kšœ‘™Kšœ‘™"Kšœ(‘™.Kšœ"‘™(Kšœ*‘™1Kšœ$‘™+Kšœ>‘™EKšœ"‘™)Kšœ‘™Kšœ‘™Kšœ-‘™4Kšœ™K™——K˜KšŸœ˜K˜——…—R"Ί