From 4bfd864f10b68b71482b35c818559068ef8d5797 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Wed, 27 Nov 2024 20:54:24 +0100 Subject: doc: Add RFC documents --- doc/rfc/rfc987.txt | 3933 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 3933 insertions(+) create mode 100644 doc/rfc/rfc987.txt (limited to 'doc/rfc/rfc987.txt') diff --git a/doc/rfc/rfc987.txt b/doc/rfc/rfc987.txt new file mode 100644 index 0000000..87a81e2 --- /dev/null +++ b/doc/rfc/rfc987.txt @@ -0,0 +1,3933 @@ + + +UCL Technical Report 120 +Mailgroup Note 19 + +Network Working Group S.E. Kille +Request for Comments: 987 University College London + June 1986 + + Mapping between X.400 and RFC 822 + + +Status of This Memo + + This RFC suggests a proposed protocol for the ARPA-Internet + community, and requests discussion and suggestions for improvements. + Distribution of this memo is unlimited. + + This document describes a set of mappings which will enable + interworking between systems operating the CCITT X.400 (1984) series + of protocols [CCITT84a], and systems using the RFC 822 mail protocol + [Crocker82a], or protocols derived from RFC 822. The approach aims + to maximise the services offered across the boundary, whilst not + requiring unduly complex mappings. The mappings should not require + any changes to end systems. + + This specification should be used when this mapping is performed on + the ARPA-Internet or in the UK Academic Community. This + specification may be modified in the light of implementation + experience, but no substantial changes are expected. + + + + + + + + + + + + + + + + + + + + + + + + + +Kille [Page 1] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + +Chapter 1 -- Overview + + 1.1. X.400 + + The X.400 series protocols have been defined by CCITT to provide + an Interpersonal Messaging Service (IPMS), making use of a store + and forward Message Transfer Service. It is expected that this + standard will be implemented very widely. As well as the base + standard (X.400), work is underway on various functional standards + of profiles which specify how X.400 will be used in various + communities. Many of the major functional standards (e.g. from + CEPT, CEN/CENELEC, and NBS) are likely to be similar. Some of the + decisions in this document are in the light of this work. No + reference is given, as these documents are not currently stable. + + 1.2. RFC 822 + + RFC 822 evolved as a messaging standard on the DARPA (the US + Defense Advanced Research Projects Agency) Internet. It is + currently used on the ARPA-Internet in conjunction with two other + standards: RFC 821, also known as Simple Mail Transfer Protocol + (SMTP) [Postel82a], and RFC 920 which is a specification for a + domain name system and a distributed name service [Postel84a]. + RFC 822, or protocols derived from RFC 822 are used in a number of + other networks. In particular: + + UUCP Networks + + UUCP is the UNIX to UNIX CoPy protocol <0>, which is usually + used over dialup telephone networks to provide a simple + message transfer mechanism. There are some extensions to + RFC 822, particularly in the addressing. They are likely to + use domains which conform to RFC 920, but not the + corresponding domain nameservers [Horton86a]. + + CSNET + + Some portions of CSNET will follow the ARPA-Internet + protocols. The dialup portion of CSNET uses the Phonenet + protocols as a replacement for RFC 821. This portion is + likely to use domains which conform to RFC 920, but not the + corresponding domain nameservers. + + BITNET + + Some parts of BITNET use RFC 822 related protocols, with + EBCDIC encoding. + + +Kille [Page 2] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + JNT Mail Networks + + A number of X.25 networks, particularly those associated + with the UK Academic Community, use the JNT (Joint Network + Team) Mail Protocol, also known as Greybook [Kille84a]. + This is used with domains and name service specified by the + JNT NRS (Name Registration Scheme) [Larmouth83a]. + + The mappings specified here are appropriate for all of these + networks. + + 1.3. The Need for Conversion + + There is a large community using RFC 822 based protocols for mail + services, who will wish to communicate with X.400 systems. This + will be a requirement, even in cases where communities intend to + make a transition to use of X.400, where conversion will be needed + to ensure a smooth service transition. It is expected that there + will be more than one gateway <1>, and this specification will + enable them to behave in a consistent manner. These gateways are + sometimes called mail relays. Consistency between gateways is + desirable to provide: + + 1. Consistent service to users. + + 2. The best service in cases where a message passes through + multiple gateways. + + 1.4. General Approach + + There are a number of basic principles underlying the details of + the specification. + + 1. The specification should be pragmatic. There should not + be a requirement for complex mappings for 'Academic' + reasons. Complex mappings should not be required to + support trivial additional functionality. + + 2. Subject to 1), functionality across a gateway should be as + high as possible. + + 3. It is always a bad idea to lose information as a result of + any transformation. Hence, it is a bad idea for a gateway + to discard information in the objects it processes. This + includes requested services which cannot be fully mapped. + + 4. All mail gateways actually operate at exactly one level + + +Kille [Page 3] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + above the layer on which they conceptually operate. This + implies that the gateway must not only be cognisant of the + semantics of objects at the gateway level, but also be + cognisant of higher level semantics. If meaningful + transformation of the objects that the gateway operates on + is to occur, then the gateway needs to understand more + than the objects themselves. + + 1.5. Gatewaying Model + + 1.5.1. X.400 + + The CCITT X.400 series recommendations specify a number of + services and protocols. The services are specified in X.400. + Two of these services are fundamental to this document: + + 1. The Message Transfer Service, which can be provided by + either the P1 or P3 protocols, which are specified in + X.411 [CCITT84b]. This document talks in terms of P1, + but the mappings are equally applicable to P3. + + 2. The Interpersonal Messaging Service (IPMS), which is + provided by the P2 protocol specified in X.420 + [CCITT84c]. + + This document considers only IPMS, and not of any other usage + of the Message Transfer Service. This is reasonable, as + RFC 822, broadly speaking, provides a service corresponding to + IPMS, and no services other than IPMS have been defined over + the Message Transfer Service. As none of the RTS (Reliable + Transfer Service) service elements is available to the IPMS + user, this level and lower levels are of no concern in this + gatewaying specification. Note that in this memo "IP" means + "InterPersonal" (not Internet Protocol). + + The Message Transfer Service defines an end-to-end service over + a series of Message Transfer Agents (MTA). It also defines a + protocol, P1, which is used between a pair of MTAs. This + protocol is simply a file format (Message Protocol Data Unit, + or MPDU), transferred between two MTAs using the RTS. There + are three types of MPDU: + + User MPDU + + This contains envelope information, and uninterpreted + contents. The envelope includes an ID, an originator, a + + + +Kille [Page 4] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + list of recipients, and trace information. It is used to + carry data for higher level services. + + Probe + + This contains only envelope information. It is used to + determine whether a User UMPDU could be delivered to a + given O/R (originator/recipient) name. + + Delivery Report + + This contains envelope information, and specified + contents. It is used to indicate delivery success or + failure of a User or Probe MPDU over the Message Transfer + Service. + + IPMS (P2) specifies two content types for the P1 User MPDU + (User Agent Protocol Data Units or UAPDU): + + Interpersonal Message (IM-UAPDU) + + This has two components: a heading, and a body. The body + is structured as a sequence of body parts, which may be + basic components (e.g.IA5 text, or G3 fax), or IP + Messages. The header contains end to end user + information, such as subject, primary recipients (To:), + and priority. The validity of these fields is not + guaranteed by the Message Transfer Service. This + provides the basic IPMS. + + Status Report (SR-UAPDU) + + This UAPDU has defined contents. It is used to indicate + that a message has been received by a User Agent. It + does not have to be implemented. + + 1.5.2. RFC 822 + + RFC 822 is based on the assumption that there is an underlying + service, which is here called the 822-P1 service. The 822-P1 + service provides three basic functions: + + 1. Identification of a list of recipients. + + 2. Identification of an error return address. + + 3. Transfer of an RFC 822 message. + + +Kille [Page 5] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + It is possible to achieve 2) within the RFC 822 header. Some + 822-P1 protocols, in particular SMTP, can provide additional + functionality, but as these are neither mandatory in SMTP, nor + available in other 822-P1 protocols, they are not considered + here. Details of aspects specific to a number of 822-P1 + protocols are given in appendices B to E. An RFC 822 message + consists of a header, and content which is uninterpreted ASCII + text. The header is divided into fields, which are the + protocol elements. Most of these fields are analogous to P2 + header elements, although some are analogous to P1 envelope + elements. + + 1.5.3. The Gateway + + Given this functional description of the two protocols, the + functional nature of a gateway can now be considered. It would + be elegant to consider the 822-P1 service mapping onto P1 and + RFC 822 mapping onto P2, but reality just does not fit. + Therefore one must consider that P1 or P1 + P2 on one side are + mapped into RFC 822 + 822-P1 on the other in a slightly tangled + manner. The details of the tangle will be made clear in + chapter 5. The following basic mappings are thus proposed. + When going from RFC 822 to X.400, an RFC 822 message and the + associated 822-P1 information is always mapped into an IM-UAPDU + and the associated P1 envelope. Going from X.400 to RFC 822, + an RFC 822 message and the associated 822-P1 information may be + derived from: + + 1. A Delivery Report MPDU + + 2. An SR-UAPDU and the associated P1 envelope. + + 3. An IM-UAPDU and the associated P1 envelope. + + Probe MPDUs must be processed by the gateway - this is + discussed in chapter 5. Any other User MPDUs are not mapped by + the gateway, and should be rejected at the gateway. + + + + + + + + + + + + +Kille [Page 6] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + 1.6. Document Structure + + This document has five chapters: + + 1. Overview - this document. + + 2. Service Elements - This describes the (end user) services + mapped by a gateway. + + 3. Basic mappings - This describes some basic notation used + in chapters 3-5, the mappings between character sets, and + some fundamental protocol elements. + + 4. Addressing - This considers the mapping between X.400 O/R + names and RFC 822 addresses, which is a fundamental + gateway component. + + 5. Protocol Elements - This describes the details of all + other mappings. + + There are also six appendices: + + A. Quoted String Encodings. + + B. Mappings Specific to JNT Mail. + + C. Mappings Specific to Internet Mail. + + D. Mappings Specific to Phonenet Mail. + + E. Mappings Specific to UUCP Mail. + + F. Format of Address Tables. + + 1.7. Acknowledgements + + This document is eclectic, and credit should be given: + + - Study of the EAN X.400 system code which performs this + function [Neufeld85a]. Some detailed clarification was + made by the DFN report on EAN [Bonacker85a]. + + - An unpublished ICL report, which considered a subset of + the problem [ICL84a]. + + - A document by Marshall Rose [Rose85a]. + + + +Kille [Page 7] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + - A document by Mark Horton [Horton85a]. The string + encodings of chapter 3 were derived directly from this + work, as is much of chapter 4. + + - Discussion on a number of electronic mailing lists. + + - Meetings in the UK and the US. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Kille [Page 8] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + +Chapter 2 -- Service Elements + + RFC 822 and X.400 provide a number of services to the end user. This + document describes the extent to which each service can be supported + across an X.400 <-> RFC 822 gateway. The cases considered are single + transfers across such a gateway, although the problems of multiple + crossings are noted where appropriate. + + When a service element is described as supported, this means that + when this service element is specified by a message originator for a + recipient behind a gateway, that it is mapped by the gateway to + provide the service implied by the element. For example, if an + RFC 822 originator specifies a Subject: field, this is considered to + be supported, as an X.400 recipient will get a subject indication. + Support implies: + + - Semantic correspondence. + + - No loss of information. + + - Any actions required by the service element. + + For some services, the corresponding protocol elements map well, and + so the service can be fully provided. In other cases, the service + cannot be provided, as there is a complete mismatch. In the + remaining cases, the service can be partially fulfilled. The level + of partial support is summarised. + + NOTE: It should be clear that support of service elements on + reception is not a gatewaying issue. It is assumed that all + outbound messages are fully conforming to the appropriate + standards. + + 2.1. RFC 822 + + RFC 822 does not explicitly define service elements, as distinct + from protocol elements. However, all of the RFC 822 header + fields, with the exception of trace, can be regarded as + corresponding to implicit RFC 822 service elements. A mechanism + of mapping used in several cases, is to place the text of the + header into the body of the IP Message. This can usually be + regarded as partial support, as it allows the information to be + conveyed to the end user even though there is no corresponding + X.400 protocol element. Support for the various service elements + (headers) is now listed. + + + + +Kille [Page 9] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + Date: + + Supported. + + From: + + Supported. For messages where there is also a sender field, + the mapping is to "Authorising Addresses", which has subtly + different semantics to the general RFC 822 usage of From:. + + Sender: + + Supported. + + Reply-To: + + Supported. + + To: + + Supported. + + Cc: + + Supported. + + Bcc: + + Supported. + + Message-Id: + + Supported. + + In-Reply-To: + + Supported, for a single reference in msg-id form. Other + cases are passed in the message text. + + References: + + Supported. + + Keywords: + + Passed in the message text. + + + +Kille [Page 10] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + Subject: + + Supported. + + Comments: + + Passed in the message text. + + Encrypted: + + Passed in the message text. This may not be very useful. + + Resent-* + + Passed in the message text. In principle, these could be + supported in a fuller manner, but this is not suggested. + + Other Fields + + In particular X-* fields, and "illegal" fields in common + usage (e.g. "Fruit-of-the-day:") are passed in the message + text. + + 2.2. X.400 + + When mapping from X.400 to RFC 822, it is not proposed to map any + elements into the body of an RFC 822 message. Rather, new RFC 822 + headers are defined. It is intended that these fields will be + registered, and that co-operating RFC 822 systems may use them. + Where these new fields are used, and no system action is implied, + the service can be regarded as being almost supported. Chapter 5 + describes how to map these new headers in both directions. Other + elements are provided, in part, by the gateway as they cannot be + provided by RFC 822. Some service elements are are marked N/A + (not applicable). These elements are only applicable to User + Agent / Message Transfer Agent interaction and have no end-to-end + implication. These elements do not need to be mapped by the + gateway. + + 2.2.1. Message Transfer Service Elements + + Access Management + + N/A. + + + + + +Kille [Page 11] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + Content Type Indication + + Not mapped. As it can only have one value (P2), there is + little use in creating a new RFC 822 header field, unless it + was to distinguish delivery reports. + + Converted Indication + + Supported by a new RFC 822 header. + + Delivery Time Stamp Indication + + N/A. + + Message Identification + + Supported, by use of a new RFC 822 header. This new header + is required, as X.400 has two message-ids whereas RFC 822 + has only one. + + Non-delivery Notification + + Not supported, although in general an RFC 822 system will + return errors as IP messages. In other elements, this + pragmatic result is treated as effective support of this + service element. + + Original Encoded Information Types Indication + + Supported as a new RFC 822 header. + + Registered Encoded Information Types + + N/A. + + Submission Time Stamp Indication + + Supported. + + Alternate Recipient Allowed + + Not supported. Any value is ignored by the gateway. + + Deferred Delivery + + Support is optional. The framework is provided so that + messages may be held at the gateway. However, a gateway + + +Kille [Page 12] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + following this specification does not have to do this. This + is in line with the emerging functional standards. + + Deferred Delivery Cancellation + + Supported. + + Delivery Notification + + Supported at gateway. Thus, a notification is sent by the + gateway to the originator <2>. + + Disclosure of Other Recipients + + Supported by use of a new RFC 822 header. + + Grade of Delivery Selection + + Supported as a new RFC 822 header. In general, this will + only be for user information in the RFC 822 world. + + Multi-Destination Delivery + + Supported. + + Prevention of Non-delivery Notification + + Not Supported, as there is no control in the RFC 822 world + (but see Non-delivery Notification). + + Return of Contents + + This is normally the case, although the user has no control + (but see Non-delivery Notification). + + Conversion Prohibition + + Supported. Note that in practice this support is restricted + by the nature of the gateway. + + Explicit Conversion + + Supported, for appropriate values (See the IPMS Typed Body + service element). + + + + + +Kille [Page 13] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + Implicit Conversion + + Supported, in the sense that there will be implicit + conversion to IA5 in cases where this is practical. + + Probe + + Supported at the gateway (i.e. the gateway services the + probe). + + Alternate Recipient Assignment + + N/A. + + Hold for Delivery + + N/A. + + 2.2.2. Interpersonal Message Service Elements + + IP-message Identification + + Supported. + + Typed Body + + Supported. IA5 is fully supported. ForwardedIPMessage is + supported, with some loss of information. A subset of TTX + is supported (see section 5 for the specification of this + subset), with some loss of information. SFD may be + supported, with some loss of information. TTX and SFD are + only supported when conversion is allowed. Other types are + not supported. + + Blind Copy Recipient Indication + + Supported. + + Non-receipt Notification + + Not supported. + + Receipt Notification + + Not supported. + + + + +Kille [Page 14] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + Auto-forwarded Indication + + Supported as new RFC 822 header. + + Originator Indication + + Supported. + + Authorising User's Indication + + Supported, although the mapping (From:) is not quite the + same. + + Primary and Copy Recipients Indication + + Supported. + + Expiry Date Indication + + Supported as new RFC 822 header. In general, only human + action can be expected. + + Cross Referencing Indication + + Supported. + + Importance Indication + + Supported as new RFC 822 header. + + Obsoleting Indication + + Supported as new RFC 822 header. + + Sensitivity Indication + + Supported as new RFC 822 header. + + Subject Indication + + Supported. + + Reply Request Indication + + Supported as comment next to address. + + + + +Kille [Page 15] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + Forwarded IP-message Indication + + Supported, with some loss of information. + + Body Part Encryption Indication + + Not supported. + + Multi-part Body + + Supported, with some loss of information, in that the + structuring cannot be formalised in RFC 822. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Kille [Page 16] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + +Chapter 3 -- Basic Mappings + + 3.1. Notation + + The P1 and P2 protocols are encoded in a structured manner + according to the X.409 specifications, whereas RFC 822 is text + encoded. To define a detailed mapping, it is necessary to refer + to detailed protocol elements in each format. This is described. + + 3.1.4. RFC 822 + + Structured text is defined according to the Extended Backus + Naur Form (EBNF) defined in section 2 of RFC 822 [Crocker82a]. + In the EBNF definitions used in this specification, the syntax + rules given in Appendix D of RFC 822 are assumed. When these + EBNF tokens are referred to outside an EBNF definition, they + are identified by the string "882." appended to the beginning + of the string (e.g. 822.addr-spec). Additional syntax rules, + to be used throughout this specification are defined in this + chapter. + + The EBNF is used in two ways. + + 1. To describe components of RFC 822 messages (or of + 822-P1 components). In this case, the lexical analysis + defined in section 3 of RFC 822 should be used. When + these new EBNF tokens are referred to outside an EBNF + definition, they are identified by the string "EBNF." + appended to the beginning of the string (e.g. + EBNF.bilateral-info). + + 2. To describe the structure of IA5 or ASCII information + not in an RFC 822 message. In these cases, tokens will + either be self delimiting, or be delimited by self + delimiting tokens. Comments and LWSP are not used as + delimiters. + + 3.1.5. X.409 + + An element is referred to with the following syntax, defined in + EBNF: + + element = protocol "." definition *( "." definition ) + protocol = "P1" / "P2" + definition = identifier / context + identifier = ALPHA *< ALPHA or DIGIT or "-" > + context = "[" 1*DIGIT "]" + + +Kille [Page 17] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + For example, P2.Heading.subject defines the subject element of + the P2 heading. The same syntax is also used to refer to + element values. For example, + P1.EncodedInformationTypes.[0].g3Fax refers to a value of + P1.EncodedInformationTypes.[0] . + + 3.2. ASCII and IA5 + + A gateway will interpret all IA5 as ASCII. Thus, they are treated + identically for the rest of this document. + + 3.3. Universal Primitives + + There is a need to convert between ASCII text, and some of the + Universal Primitive types defined in X.409 [CCITT84d]. For each + case, an EBNF syntax definition is given, for use in all of this + specification. All EBNF syntax definitions of Universal + Primitives are in lower case, whereas X.409 primitives are + referred to with the first letter in upper case. Except as noted, + all mappings are symmetrical. + + 3.3.1. Boolean + + Boolean is encoded as: + + boolean = "TRUE" / "FALSE" + + 3.3.2. NumericString + + NumericString is encoded as: + + numericstring = *DIGIT + + 3.3.3. PrintableString + + PrintableString is a restricted IA5String defined as: + + printablestring = *( ps-char / ps-delim ) + + ps-char = 1DIGIT / 1ALPHA / " " / "'" / "+" / ")" + / "," / "-" / "." / "/" / ":" / "=" / "?" + + ps-delim = "(" + + A structured subset of EBNF.printablestring is now defined. + This can be used to encode ASCII in the PrintableString + character set. + + +Kille [Page 18] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + ps-encoded = *( ps-char / ps-encoded-char ) + + ps-encoded-char = "(a)" ; (@) + / "(p)" ; (%) + / "(b)" ; (!) + / "(q)" ; (") + / "(u)" ; (_) + / "(" 3DIGIT ")" + + The 822.3DIGIT in EBNF.ps-encoded-char must have range 0-127 + (Decimal), and is interpreted in decimal as the corresponding + ASCII character. Special encodings are given for: at sign (@), + percent (%), exclamation mark/bang (!), double quote ("), and + underscore (_). These characters are not included in + PrintableString, but are common in RFC 822 addresses. The + abbreviations will ease specification of RFC 822 addresses from + an X.400 system. + + An asymmetric mapping between PrintableString and ASCII can now + be defined <3>. To encode ASCII as PrintableString, the + EBNF.ps-encoded syntax is used, with all EBNF.ps-char AND + EBNF.ps-delim mapped directly <4>. All other 822.CHAR are + encoded as EBNF.ps-encoded-char. There are two cases of + encoding PrintableString as ASCII. If the PrintableString can + be parsed as EBNF.ps-encoded, then the previous mapping should + be reversed. If not, it should be interpreted as + EBNF.printablestring. + + Some examples are now given. Note the arrows which indicate + asymmetrical mappings: + + PrintableString ASCII + + 'a demo.' <-> 'a demo.' + foo(a)bar <-> foo@bar + + (q)(u)(p)(q) <-> "_%" + (a) <-> @ + (a) <- (a) + (040)a(041) -> (a) + (040)(a) -> (@ + ((a) <- (@ + + The algorithm is designed so that it is simple to use in all + common cases, so that it is general, and so that it is + straightforward to code. It is not attempting to minimise the + number of pathological cases. + + +Kille [Page 19] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + 3.3.4. T.61String + + T.61 strings are, in general, only used for conveying human + interpreted information. Thus, the aim of a mapping should be + to render the characters appropriately in the remote character + set, rather than to maximise reversibility. The mappings + defined in the CEN/CENELEC X.400 functional standard should be + used [CEN/CENELEC/85a]. These are based on the mappings of + X.408 (sections 4.2.2 and 5.2.2). + + 3.3.5. UTCTime + + Both UTCTime and the RFC 822 822.date-time syntax contain: Year + (lowest two digits), Month, Day of Month, hour, minute, second + (optional), and Timezone. 822.date-time also contains an + optional day of the week, but this is redundant. Therefore a + symmetrical mapping can be made between these constructs <5>. + The UTCTime format which specifies the timezone offset should + be used, in line with CEN/CENELEC recommendations. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Kille [Page 20] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + +Chapter 4 -- Addressing + + Addressing is probably the trickiest problem of an X.400 <-> RFC 822 + gateway. Therefore it is given a separate chapter. This chapter, as + a side effect, also defines a standard textual representation of + X.400 addresses. + + Initially we consider an address in the (human) mail user sense of + "what is typed at the mailsystem to reference a human". A basic + RFC 822 address is defined by the EBNF EBNF.822-address: + + 822-address = [ route ] addr-spec + + In an 822-P1 protocol, the originator and each recipient should be + considered to be defined by such a construct. In an RFC 822 header, + the EBNF.822-address is encapsulated in the 822.address syntax rule, + and there may also be associated comments. None of this extra + information has any semantics, other than to the end user. + + The basic X.400 address is defined by P1.ORName. In P1 all recipient + P1.ORnames are encapsulated within P1.RecipientInfo, and in P2 all + P2.ORNames <6> are encapsulated within P2.ORDescriptor. + + It can be seen that RFC 822 822.address must be mapped with + P2.ORDescriptor, and that RFC 822 EBNF.822-address must be mapped + with P1.ORName (originator) and P1.RecipientInfo (recipients). + + This chapter is structured as follows: + + 4.1 Introduction. + + 4.2 A textual representation of P1.ORName. This is needed for + the later mappings, and as a side effect provides a standard + representation for O/R names. + + 4.3 Mapping between EBNF.822-address and P1.ORName + + 4.4 The Full P1 / 822-P1 Mapping + + 4.5 The Full P2 / RFC 822 Mapping + + 4.6 Mapping Message-IDs. + + + + + + + +Kille [Page 21] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + 4.1. A textual representation of P1.ORName. + + P1.ORName is structured as a set of attribute value pairs. It is + clearly necessary to be able to encode this in ASCII for + gatewaying purposes. A general encoding is given here, which may + be used as a basis for a user interface, as well as for the + defined gateway mapping. + + 4.1.1. Basic Representation + + A series of BNF definitions of each possible attribute value + pair is given, which is given a 1:1 mapping with the X.400 + encoding. The rest of the mapping then talks in terms of these + BNF components, with the mapping to X.400 encoding being + trivial. + + attributevalue = c / admd / prmd / x121 / t-id / o / ou + / ua-id / pn.g / pn.i / pn.s / pn.gq / dd.value + + c = printablestring ; P1.CountryName + admd = printablestring ; P1.AdministrationDomainName + prmd = printablestring ; P1.PrivateDomainName + x121 = numericstring ; P1.X121Address + t-id = numericstring ; P1.TerminalID + o = printablestring ; P1.OrganisationName + ou = printablestring ; P1.OrganisationalUnit + ua-id = numericstring ; P1.UniqueUAIdentifier + pn.s = printablestring ; P1.PersonalName.surName + pn.g = printablestring ; P1.PersonalName.givenName + pn.i = printablestring ; P1.PersonalName.initials + pn.gq = printablestring ; P1.PersonalName.generation + Qualifier + dd.value = printablestring ; P1.DomainDefined + Attribute.value + + In cases where an attribute can be encoded as either a + PrintableString or NumericString (Country, ADMD, PRMD) it is + assumed that the NumericString encoding will be adopted if + possible. This prevents the encoding of PrintableString where + the characters are all numbers. This restriction seems + preferable to the added complexity of a general solution. + Similarly, we can define a set of attribute types. + + + + + + + +Kille [Page 22] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + dd.type = printablestring ; P1.DomainDefinedAttribute.type + + standard-type = + "C" ; P1.CountryName + / "ADMD" ; P1.AdministrationDomainName + / "PRMD" ; P1.PrivateDomainName + / "X121" ; P1.X121Address + / "T-ID" ; P1.TerminalID + / "O" ; P1.OrganisationName + / "OU" ; P1.OrganisationalUnit + / "UA-ID" ; P1.UniqueUAIdentifier + / "S" ; P1.PersonalName.surName + / "G" ; P1.PersonalName.givenName + / "I" ; P1.PersonalName.initials + / "GQ" ; P1.PersonalName.generationQualifier + + standard-dd-type = + "RFC-822" ; dd.type = "RFC-822" + / "JNT-Mail" ; dd.type = "JNT-Mail" + / "UUCP" ; dd.type = "UUCP" + + 4.1.2. Encoding of Personal Name + + Handling of Personal Name based purely on the + EBNF.standard-type syntax defined above is likely to be clumsy. + It seems desirable to utilise the "human" conventions for + encoding these components. A syntax is proposed here. It is + designed to cope with the common cases of O/R Name + specification where: + + 1. There is no generational qualifier + + 2. Initials contain only letters <7>. + + 3. Given Name does not contain full stop ("."), and is at + least two characters long. + + 4. If Surname contains full stop, then it may not be in + the first two characters, and either initials or given + name is present. + + + + + + + + + +Kille [Page 23] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + The following EBNF is defined: + + encoded-pn = [ given "." ] *( initial "." ) surname + + given = 2* + + initial = ALPHA + + surname = printablestring + + Subject to the above restriction, this is a reversible mapping. + + For example: + + GivenName = "Marshall" + Surname = "Rose" + + Maps with "Marshall.Rose" + + Initials = "MT" + Surname = "Rose" + + Maps with "M.T.Rose" + + GivenName = "Marshall" + Initials = "MT" + Surname = "Rose" + + Maps with "Marshall.M.T.Rose" + + Note that CCITT guidelines suggest that Initials is used to + encode ALL initials. Therefore, the proposed encoding is + "natural" when either GivenName or Initials, but not both, are + present. The case where both are present can be encoded, but + this appears to be contrived! + + 4.1.3. Two encodings of P1.ORName + + Given this structure, we can specify a BNF representation of an + O/R Name. + + + + + + + + + +Kille [Page 24] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + std-orname = 1*( "/" attribute "=" value ) "/" + attribute = standard-type + / "PN" + / standard-dd-type + / registered-dd-type + / "DD." std-printablestring + value = std-printablestring + registered-dd-type + = std-printablestring + std-printablestring = + = *( std-char / std-pair ) + std-char = + dmn-pair = "\." + + For example: C$US.ADMD$ATT.~ROLE$Big\.Chief + + + + + + + + + + + +Kille [Page 25] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + 4.2. Mapping between EBNF.822-address and P1.ORName + + Ideally, the mapping specified would be entirely symmetrical and + global, to enable addresses to be referred to transparently in the + remote system, with the choice of gateway being left to the + Message Transfer Service. There are two fundamental reasons why + this is not possible: + + 1. The syntaxes are sufficiently different to make this + awkward. + + 2. In the general case, there would not be the necessary + administrative co-operation between the X.400 and RFC 822 + worlds, which would be needed for this to work. + + Therefore, an asymmetrical mapping is defined. + + 4.2.1. X.400 encoded in RFC 822 + + The std-orname syntax is used to encode O/R Name information + in the 822.local-part of EBNF.822-address. Further O/R Name + information may be associated with the 822.domain component. + This cannot be used in the general case, basically due to + character set problems, and lack of order in X.400 O/R Names. + The only way to encode the full PrintableString character set + in a domain is by use of the 822.domain-ref syntax. This is + likely to cause problems on many systems. The effective + character set of domains is in practice reduced from the + RFC 822 set, by restrictions imposed by domain conventions and + policy. + + A generic 822.address consists of a 822.local-part and a + sequence of 822.domains (e.g. + <@domain1,@domain2:user@domain3>). All except the 822.domain + associated with the 822.local-part (domain3 in this case) + should be considered to specify routing within the RFC 822 + world, and will not be interpreted by the gateway (although + they may have identified the gateway from within the RFC 822 + world). The 822.domain associated with the 822.local-part may + also identify the gateway from within the RFC 822 world. This + final 822.domain may be used to determine some number of O/R + Name attributes. The following O/R Name attributes are + considered as a hierarchy, and may be specified by the domain. + They are (in order of hierarchy): + + Country, ADMD, PRMD, Organisation, Organisational Unit + + + +Kille [Page 26] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + There may be multiple Organisational Units. + + Associations may be defined between domain specifications, and + some set of attributes. This association proceeds + hierarchically: i.e. if a domain implies ADMD, it also implies + country. If one of the hierarchical components is omitted from + an X.400 structure, this information can be associated with the + corresponding domain (e.g. a domain can be mapped onto a + Country/ADMD/Organisation tuple). Subdomains under this are + associated according to the O/R Name hierarchy. For example: + + => "AC.UK" might be associated with + C="234", ADMD="BT", PRMD="DES" + + then domain "R-D.Salford.AC.UK" maps with + C="234", ADMD="BT", PRMD="DES", O="Salford", OU="R-D" + + There are two basic reasons why a domain/attribute mapping + might be maintained, as opposed to using simply subdomains: + + 1. As a shorthand to avoid redundant X.400 information. + In particular, there will often be only one ADMD per + country, and so it does not need to be given + explicitly. + + 2. To deal with cases where attribute values do not fit + the syntax: + + domain-syntax = ALPHA [ *alphanumhyphen alphanum ] + alphanum = + alphanumhyphen = + + Although RFC 822 allows for a more general syntax, this + restriced syntax is chosen as it is the one chosen by the + various domain service administrations. + + This provides a general aliasing mechanism. + + This set of mappings need only be known by the gateways + relaying between the RFC 822 world, and the O/R Name namespace + associated with the mapping in question. However, it is + desirable (for the optimal mapping of third party addresses) + for all gateways to know these mappings. A format for the + exchange of this information is defined in Appendix F. + + From the standpoint of the RFC 822 Message Transfer System, the + domain specification is simply used to route the message in the + + +Kille [Page 27] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + standard manner. The standard domain mechanisms are used to + identify gateways, and are used to select appropriate gateways + for the corresponding O/R Name namespace. In most cases, this + will be done by registering the higher levels, and assuming + that the gateway can handle the lower levels. + + As a further mechanism to simplify the encoding of common + cases, where the only attributes to be encoded on the LHS are + Personal Name attributes which comply with the restrictions of + 4.2.2, the 822.local-part may be encoded as EBNF.encoded-pn. + + An example encoding is: + + /PN=J.Linnimouth/GQ=5/@Marketing.Xerox.COM + + encodes the P1.ORName consisting of + + P1.CountryName = "US" + P1.AdministrationDomainName = "ATT" + P1.OrganisationName = "Xerox" + P1.OrganisationalUnit = "Marketing" + P1.PersonalName.surName = "Linnimouth" + P1.PersonalName.initials = "J" + P1.PersonalName.GenerationQualifier = "5" + + If the GenerationQualifier was not present, the encoding + J.Linnimouth@Marketing.Xerox.COM could be used. + + Note that in this example, the first three attributes are + determined by the domain Xerox.COM. The OrganisationalUnit is + determined systematically. + + There has been an implicit assumption that an RFC 822 domain is + either X.400 or RFC 822. This is pragmatic, but undesirable, + as the namespace should be structured on a logical basis which + does not necessarily correspond to the choice of Message + Transfer protocols. The restriction can be lifted, provided + that the nameservice deals with multiple message transfer + protocols. This can happen in a straightforward manner for the + UK NRS, as explained in [Kille86a]. It could also be achieved + with the DARPA Domain Nameserver scheme by use of the WKS + mechanism. + + + + + + + +Kille [Page 28] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + 4.2.2. RFC 822 Encoded in X.400 + + In some cases, the encoding defined above may be reversed, to + give a "natural" encoding of genuine RFC 822 addresses. This + depends largely on the allocation of appropriate management + domains. + + The general case is mapped by use of domain defined attributes. + Three are defined, according to the full environment used to + interpret the RFC 822 information. + + 1. Domain defined type "RFC-822". This string is to be + interpreted in the context of RFC 822, and RFC 920 + [Crocker82a,Postel84a]. + + 2. Domain defined type "JNT-Mail". This string is to be + interpreted in the context of the JNT Mail protocol, + and the NRS [Kille84a,Larmouth83a]. + + 3. Domain defined type "UUCP". This is interpreted + according to the constraints of the UUCP world + [Horton86a]. + + These three are values currently known to be of use. Further + recognised values may be defined. These will be maintained in + a list at the SRI Network Information Center. + + Other O/R Name attributes will be used to identify a context in + which the O/R Name will be interpreted. This might be a + Management Domain, or some part of a Management Domain which + identifies a gateway MTA. For example: + + 1) + + C = "GB" + ADMD = "BT" + PRMD = "AC" + "JNT-Mail" = "Jimmy(a)UK.CO.BT-RESEARCH-LABS" + + 2) + + C = "US" + ADMD = "Telemail" + PRMD = "San Fransisco" + O = "U Cal" + OU = "Berkeley" + "RFC-822" = "postel(a)usc-isib.arpa" + + +Kille [Page 29] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + Note in each case the PrintableString encoding of "@" as "(a)". + In the first example, the "JNT-Mail" domain defined attribute + is interpreted everywhere within the (Administrative or + Private) Management Domain. In the second example, further + attributes are needed within the Management Domain to identify + a gateway. Thus, this scheme can be used with varying levels + of Management Domain co-operation. + + 4.2.3. RFC 822 -> X.400 + + There are two basic cases: + + 1. X.400 addresses encoded in RFC 822. This will also + include RFC 822 addresses which are given reversible + encodings. + + 2. "Genuine" RFC 822 addresses. + + The mapping should proceed as follows, by first assuming case + 1). + + STAGE 1. + + 1. If the 822-address is not of the form: + + local-part "@" domain + + go to stage 2. + + 2. Attempt to parse domain as: + + *( domain-syntax "." ) known-domain + + Where known-domain is the longest possible match in a + list of gatewayed domains. If this fails, and the domain + does not explicitly identify the local gateway, go to + stage 2. If it succeeds, allocate the attributes + associated with EBNF.known-domain, and systematically + allocate the attributes implied by each + EBNF.domain-syntax component. + + 3. Map 822.local-part to ASCII, according to the + definition of Appendix A. This step should be applied: + + A. If the source network cannot support + 822.quoted-string (as discussed in Appendix A). + + + +Kille [Page 30] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + B. If the address is an 822-P1 recipient. + + This mapping is always applied in case B, as it + increases the functionality of the gateway, and does + not imply any loss of generality. Mapping case B + allows sites which cannot generate 822.quoted-string + to address recipients the gateway, without the gateway + having to know this explicitly. There is no loss of + functionality, as the quoting character of Appendix A + (#) is not in PrintableString. This seems desirable. + It should not be applied in to other addresses, as a + third party RFC#822 address containing the sequence + EBNF.atom-encoded (as defined in Appendix A) would be + transformed asymmetrically. + + 4. Map the result of 3) to EBNF.ps-encoded according to + section 3. + + 5. Parse the result of 4) according to the EBNF + EBNF.std-orname. If this parse fails, parse the result + of 4) according to the EBNF EBNF.encoded-pn. If this + also fails, go to stage 2. Otherwise, the result is a + set of type/value pairs. + + 6. Associate the EBNF.attribute-value syntax (determined + from the identified type) with each value, and check + that it conforms. If not, go to stage 2. + + 7. Ensure that the set of attributes conforms both to the + X.411 P1.ORName specification and to the restrictions + on this set given in X.400. If not go to stage 2. + + 8. Build the O/R Name from this information. + + STAGE 2. + + This will only be reached if the RFC 822 EBNF.822-address is + not a valid X.400 encoding. If the address is an 822-P1 + recipient address, it must be rejected, as there is a need to + interpret such an address in X.400. For the 822-P1 return + address, and any addresses in the RFC 822 header, they should + now be encoded as RFC 822 addresses in an X.400 O/R Name: + + 1. Convert the EBNF.822-address to PrintableString, as + specified in chapter 3. + + 2. The domain defined attribute ("RFC-822", "JNT-Mail" or + + +Kille [Page 31] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + "UUCP") appropriate to the gateway should be selected, + and its value set. + + 3. Build the rest of the O/R Name in the local Management + Domain agreed manner, so that the O/R Name will receive + a correct global interpretation. + + 4.2.4. X.400 -> RFC 822 + + There are two basic cases: + + 1. RFC 822 addresses encoded in X.400. + + 2. "Genuine" X.400 addresses. This may include + symmetrically encoded RFC 822 addresses. + + When a P1 Recipient O/R Name is interpreted, gatewaying will be + selected if there a single special domain defined attribute + present ("RFC-822", "JNT-Mail" or "UUCP"). In this case, use + mapping A. For other O/R Names which + + 1. Contain the special attribute. + + AND + + 2. Identify the local gateway with the other attributes. + + Use mapping A. In other cases, use mapping B. + + Mapping A + + 1. Map the domain defined attribute value to ASCII, as + defined in chapter 3. + + 2. Where appropriate (P1 recipients), interpret the string + according to the semantics implied by the domain + defined attribute. + + Mapping B. + + This will be used for X.400 addresses which do not use the + explicit RFC 822 encoding. + + 1. Noting the hierarchy specified in 4.3.1, determine the + maximum set of attributes which have an associated + domain specification. If no match is found, allocate + + + +Kille [Page 32] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + the domain as the domain specification of the local + gateway, and go to step 4. + + 2. Following the 4.3.1 hierarchy, if each successive + component exists, and conforms to the syntax + EBNF.domain-syntax (as defined in 4.3.1), allocate the + next subdomain. + + 3. If the remaining components are personal-name + components, conforming to the restrictions of 4.2.2, + then EBNF.encoded-pn should be derived to form + 822.local-part. In other cases the remaining + components should simply be encoded as a 822.local-part + using the EBNF.std-orname syntax. Where registered + domain defined types exist, the DD. syntax should not + be used. + + 4. If this step is reached for an 822-P1 recipient, then + the address is invalid. For other addresses, if the + derived 822.local-part can only be encoded by use of + 822.quoted-string, the gateway may optionally use the + ASCII to 822.local-part mapping defined in Appendix A, + dependent on the mail protocols of the networks being + relayed to. Use of this encoding is discouraged. + + 4.3. Repeated Mappings + + The mappings defined are symmetrical across a single gateway, + except in certain pathological cases (see chapter 3). However, it + is always possible to specify any valid address across a gateway. + This symmetry is particularly useful in cases of (mail exploder + type) distribution list expansion. For example, an X.400 user + sends to a list on an RFC 822 system which he belongs to. The + received message will have the originator and any 3rd party X.400 + O/R names in correct format (rather than doubly encoded). In + cases (X.400 or RFC 822) where there is common agreement on + gateway identification, then this will apply to multiple gateways. + + However, the syntax may be used to source route. + + For example: X.400 -> RFC 822 -> X.400 + + C = "UK" + ADMD = "BT" + PRMD = "AC" + "JNT-Mail" = "/PN=Duval/DD.Title=Manager/(a)FR.PTT.Inria" + + + +Kille [Page 33] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + This will be sent to an arbitrary UK Academic Community gateway + by X.400. Then by JNT Mail to another gateway determined by + the domain FR.PTT.Inria. This will then derive the X.400 O/R + Name: + + C = "FR" + ADMD = "PTT" + PRMD = "Inria" + PN.S = "Duval" + "Title" = "Manager" + + Similarly: RFC 822 -> X.400 -> RFC 822 + + "/C=UK/ADMD=BT/PRMD=AC/RFC-822=jj(a)seismo.css.gov/" + @monet.berkeley.edu + + /C=UK/ADMD=BT/PRMD=AC/RFC-822=jj#l#a#r#seismo.css.gov/ + @monet.berkeley.edu + + The second case uses the Appendix A encoding to avoid + 822.quoted-text. This will be sent to monet.berkeley.edu by + RFC 822, then to the AC PRMD by X.400, and then to + jj@seismo.css.gov by RFC 822. + + 4.4. The full P1 / 822-P1 mapping + + There are two basic mappings at the P1 level: + + 1. 822-P1 return address <-> P1.UMPDUEnvelope.originator + + 2. 822-P1 recipient <-> P1.RecipientInfo + + 822-P1 recipients and return addresses are encoded as + EBNF.822-address. As P1.UMPDUEnvelope.originator is encoded as + P1.ORName, mapping 1) has already been specified. + P1.RecipientInfo contains a P1.ORName and additional information. + The handling of this additional information is now specified. + + 4.4.1. RFC 822 -> X.400 + + The following default settings should be made for each + component of P1.RecipientInfo. + + P1.ExtensionIdentifier + + This can be set systematically by the X.400 system. + + + +Kille [Page 34] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + P1.RecipientInfo.perRecipientFlag + + Responsibility Flag should be set. Report Request should + be set according to content return policy, as discussed + in section 5.3. User Report Request should be set to + Basic. + + P1.ExplicitConversion + + This optional component should be omitted. + + 4.4.2. X.400 -> RFC 822 + + The mapping only takes place in cases where + P1.RecipientInfo.perRecipientFlag Responsibility Flag is set. + The following treatment should be given to the other + P1.RecipientInfo components. + + P1.ExtensionIdentifier + + Not used. + + P1.RecipientInfo.perRecipientFlag + + If ReportRequest is Confirmed or Audit-and-Confirmed then + a delivery report indicating success should be sent by + the gateway. This report should use each + P1.ReportedRecipientInfo.SupplementaryInformation to + indicate the identity of the gateway, and the nature of + the report (i.e. only as far as the gateway). Failures + will be handled by returning RFC 822 messages, and so + User Report Request set to No report is ignored. + + P1.ExplicitConversion + + If present, the O/R name should be rejected, unless the + requested conversion can be achieved. None of the + currently recognised values of this parameter are + appropriate to a gateway using this specification. + + + + + + + + + + +Kille [Page 35] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + 4.5. The full P2 / RFC 822 mapping + + All RFC 822 addresses are assumed to use the 822.mailbox syntax. + This should include all 822.comments associated with the lexical + tokens of the 822.mailbox. All P2.ORNames are encoded within the + syntax P2.ORDescriptor, or P2.Recipient (or within Message IDs). + An asymmetrical mapping is defined between these components. + + 4.5.1. RFC 822 -> X.400 + + The following sequence is followed. + + 1. Take the address, and extract an EBNF.822-address. + This can be derived trivially from either the + 822.addr-spec or 822.route-addr syntax. This is mapped + to P2.ORName as described above. + + 2. A string should be built consisting of (if present): + + - The 822.phrase component if it is a 822.phrase + 822.route-addr construct. + + - Any 822.comments, in order, retaining the + parentheses. + + This string should then be encoded into T.61 (as + described in chapter 3). If the string is not null, + it should be assigned to P2.ORDescriptor.freeformName. + + 3. P2.ORDescriptor.telephoneNumber should be omitted. + + 4. In cases of converting to P2.Recipient, + P2.Recipient.replyRequest and + P2.Recipient.reportRequest should be omitted. + + If the 822.group construct is present, each included + 822.mailbox should be encoded as above. The 822.group should + be mapped to T.61, and a P2.ORDesciptor with only a + freeformName component built from it. + + 4.5.2. X.400 -> RFC 822 + + In the basic case, where P2.ORName is present, proceed as + follows. + + 1. Encode P2.ORName as EBNF.822-address. + + + +Kille [Page 36] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + 2a. If P2.ORDescriptor.freeformName is present, convert it + to ASCII (chapter 3), and use use this as the + 822.phrase component of 822.mailbox using the + 822.phrase 822.route-addr construct. + + 2b. If P2.ORDescriptor.freeformName is absent, if + EBNF.822-address is parsed as 822.addr-spec use this as + the encoding of 822.mailbox. If EBNF.822-address is + parsed as 822.route 822.addr-spec, then a 822.phrase + taken from 822.local-part should be added. + + 3. If P2.ORDescriptor.telephoneNumber is present, this + should be placed in a trailing 822.comment. + + 4. If P2.Recipient.reportRequest has the + receiptNotification bit set, then an 822.comment + "(Receipt Notification Requested)" should be appended + to the address. The effort of correlating P1 and P2 + information is too great to justify the gateway sending + Receipt Notifications. + + 5. If P2.Recipient.replyRequest is present, an 822.comment + "(Reply requested)" or "(Reply not requested)" should + be appended to the address, dependent on its value. + + If P2.ORName is absent, P2.ORDescriptor.freeformName should be + converted to ASCII, and used with the RFC 822 822.group syntax: + + freeformname ":" ";" + + Steps 3-5 should then be followed. + + 4.6. Message IDs + + There is a need to map both ways between 822.msg-id and + P2.IPMessageID. A mapping is defined which is symmetrical for + non-pathological cases. The mapping allows for the fact that + P2.IPMessageID.PrintableString is mandatory for the Cen/Cenelec + profile. This allows for good things to happen when messages pass + multiple times across the X.400/RFC 822 boundary. A mapping + between 822.msg-id and P1.MPDUIdentifier is defined. This allows + for X.400 error messages to reference an RFC 822 ID, which is + preferable to a gateway generated ID. + + + + + + +Kille [Page 37] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + 4.6.1. P2.IPMessageID -> 822.msg-id + + P2.IPMessageID.ORName is used to generate an 822.addr-spec, as + defined above. P2.IPMessageID.PrintableString is mapped to + ASCII, as defined in chapter 3. This string (if it is present + and if the value is not "RFC-822") is appended to the front of + the 822.local-part of the 822.msg-id, with "*" as a separator. + If no ORName is present, an 822.msg-id of the form + "PrintableString*@gateway-domain" is generated. + + 4.6.2. 822.msg-id -> P2.IPMessageID + + 822.local-part is parsed as: + + [ printablestring "*" ] real-local-part + + If EBNF.printablestring is found, it is mapped to + PrintableString, and used as P2.IPMessageID.PrintableString. + Otherwise + P2.IPMessageID.PrintableString is set to "RFC-822". This + arbitrary value allows for conformance to Cen/Cenelec. If + EBNF.real-local-part is not present, no P2.IPMessageID.ORName + is generated. Otherwise, 822.local-part is replaced with + EBNF.real-local-part, and 822.addr-spec is mapped to + P2.IPMessageID.ORName as defined above. + + 4.6.3. 822.msg-id -> P1.MPDUIdentifier + + P1.CountryName is assigned to "", P1.AdministrationDomainName + to 822.domain (from 822.msg-id) and P1.MPDUIdentifier.IA5String + to 822.local-part (from 822.msg-id). + + 4.6.4. P1.MPDUIdentifier -> 822.msg-id + + 822.local-part is set to P1.MPDUIdentifier.IA5String, with any + CRLF mapped to SPACE. If P1.CountryName is "", 822.domain is + set to P1.AdministrationDomainName; Otherwise to + P1.AdministrationDomainName ".." P1.CountryName. If there are + any specials, the domain literal encoding should be used. + + + + + + + + + + +Kille [Page 38] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + +Chapter 5 -- Protocol Elements + + This chapter gives detailed mappings for the functions outlined in + chapters 1 and 2. It makes extensive use of the notations and + mappings defined in chapters 3 and 4. This chapter is structured as + follows: + + 5.1. Basic RFC 822 -> X.400 mappings + + 5.2. A definition of some new RFC 822 elements, and their mapping + to X.400. + + 5.3 Some special handling associated with Return of Contents. + + 5.4. X.400 -> RFC 822 + + 5.1. RFC 822 -> X.400 + + First, the basic functions of an 822-P1 protocol should be mapped + as follows: + + 822-P1 Originator + + Mapped to P1.UMPDUEnvelope.originator (see chapter 4). + + 822-P1 Recipient + + Mapped to P1.RecipientInfo (see chapter 4). + + The RFC 822 headers are used to generate both a P1.UMPDUEnvelope + and a P2.Heading. The IP Message will have either one or two + P2.BodyParts which will be type P2.IA5Text with no + P2.IA5Text.repertoire component. The last P2.BodyPart will contain + the RFC 822 message body. If there are any RFC 822 headers which + indicate mapping into the P2.BodyPart, then two P2.BodyParts are + generated. If a revised version of P2 allowed for extensible + header specification, this would be seen as a preferable mapping. + The first body part will start with the line: + + RFC-822-Headers: + + The rest of this body part will contain all of the headers not + otherwise mapped (both 822.field-name and 822.field-body). The + order of any such headers should be preserved. Similarly, + ordering within P2.Heading and P1.UMPDUEnvelope should reflect + ordering within the RFC 822 header. No P1 or P2 optional fields + are generated unless specified. + + +Kille [Page 39] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + A pro-forma X.400 message is now specified. Some of these + defaults may be changed by the values in the RFC 822 message being + mapped. The mandatory P1 and P2 components have the following + defaults. + + P1.MPDUIdentifier + + The default should be unique value generated by the gateway. + + P1.OriginatorORName + + Always generated from 822-P1. + + P1.ContentType + + P1.ContentType.p2 + + P1.RecipientInfo + + These will always be supplied from 822-P1. + + P1.Trace + + The last P1.TraceInformation component is generated such + that: P1.TraceInformation.GlobalDomainIdentifier is set to + the local vaglue. P1.DomainSuppliedInfo.action is set to + relayed. P1.DomainSuppliedInfo.arrival is set to the current + time. P1.DomainSuppliedInfo.previous may be set if there is + anything sensible to set it to. + + P2.IPMessageID + + The default should be a unique value generated by the + gateway. + + The following optional parameters should be set: + + P1.PerMessageFlag + + The P1.PerMessageFlag.contentReturnRequest bit should be set + according to the discussion in section 5.3. The + P1.PerMessageFlag.alternateRecipientAllowed bit should be + set, as it seems desirable to maximise opportunity for + (reliable) delivery. + + + + + +Kille [Page 40] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + The RFC 822 headings should be mapped as follows: + + Received: + + Fudged onto P1.TraceInformation (try not to grimace too + much). P1.DomainSuppliedInfo.action is set to relayed. + P1.DomainSuppliedInfo.arrival is set to the date-time + component P1.TraceInformation.GlobalDomainIdentifier has + P1.CountryName as a null string, and + P1..AdministrationDomainName as the domain of the receiving + host (if present - null string if not). + P1.DomainSuppliedInfo.previous has P1.CountryName as a null + string, and P1.AdministrationDomainName has the domain of + the sending host with all other information enclosed in + round parentheses. The encoding of ASCII to PrintableString + (chapter 3) should be used if needed. For example: + + Received: from 44e.cs.ucl.ac.uk by vax2.Cs.Ucl.AC.UK + with SMTP id a002110; 18 Dec 85 10:40 GMT + + maps to - + + P1.GlobalDomainIdentifier + CountryName = "" + AdministrationDomainName = "vax2.Cs.Ucl.AC.UK" + P1.DomainSuppliedInfo + arrival = 18 Dec 85 10:40 GMT + action = relayed + previous + CountryName = "" + AdministrationDomainName = + "44e.cs.ucl.ac.uk (with SMTP id a002110)" + + Date: + + This is used to set the first component of + P1.TraceInformation. The mandatory components are set as + follows: + + P1.GlobalDomainIdentifier + CountryName = "" + AdministrationDomainName = "" + P1.DomainSuppliedInfo + arrival = time derived from Date: + action = relayed + + No optional fields are used in the trace. + + +Kille [Page 41] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + Message-Id: + + Mapped to P2.IPMessageID. If the RFC 822 message does not + contain a P1-Message-ID: field, the Message-Id: field is + also mapped to P1.MPDUIdentifier. For these, and all other + fields containing msg-id the mappings of chapter 4 are used + for each msg-id. + + From: + + If Sender: is present, this is mapped to + P2.AuthorisingUsers. If not, it is mapped to P2.Originator. + For this, and other components containing addresses, the + mappings of chapter 4 are used for each address. + + Sender: + + Mapped to P2.Originator. + + Reply-To: + + Mapped to P2.Heading.replyToUsers. + + To: + + Mapped to P2.Heading.primaryRecipients + + Cc: + + Mapped to P2.Heading.copyRecipients. + + Bcc: + + Mapped to P2.Heading.blindCopyRecipients. + + In-Reply-To: + + Mapped to P2.Heading.inReplyTo for the first (if any) + 822.msg-id component. If the field contains an 822.phrase + component, or there are multiple 822.msg-id components, the + ENTIRE field is passed in the P2.BodyPart. + + References: + + Mapped to P2.Heading.crossReferences. + + + + +Kille [Page 42] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + Keywords: + + Passed in the P2.BodyPart. + + Subject: + + Mapped to P2.Heading.subject. The field-body uses the + mapping referenced in chapter 3 from ASCII to T.61. + + Comments: + + Passed in the P2.BodyPart. + + Encrypted: + + Passed in the P2.BodyPart. + + Resent-* + + Passed in the P2..BodyPart <8>. + + Other Fields + + In particular X-* fields, and "illegal" fields in common + usage (e.g. "Fruit-of-the-day:") are passed in the + P2.BodyPart. The same treatment should be applied to + RFC 822 fields where the content of the field does not + conform to RFC 822 (e.g. a Date: field with unparsable + syntax). + + 5.2. Extended RFC 822 Elements -> X.400 + + First an EBNF definition of a number of extended fields is given, + and then a mapping to X.400 is defined. In most cases, the + RFC 822 syntax is defined to make this mapping very + straightforward, and so no detailed explanation of the mapping is + needed. + + extended-field = "P1-Message-ID" ":" p1-msg-id + / "X400-Trace" ":" x400-trace + / "Original-Encoded-Information-Types" + ":"encoded-info + / "P1-Content-Type" ":" p1-content-type + / "UA-Content-ID" ":" printablestring + / "Priority" ":" priority + / "P1-Recipient" : 1 mailbox + / "Deferred-Delivery" ":" date-time + + +Kille [Page 43] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + / "Bilateral-Info" ":" bilateral-info + / "Obsoletes" ":" 1 msg-id + / "Expiry-Date" ":" date-time + / "Reply-By" ":" date-time + / "Importance" ":" importance + / "Sensitivity" ":" sensitivity + / "Autoforwarded" ":" boolean + + p1-msg-id = global-id ";" *text + + p1-content-type = "P2" / atom + + x400-trace = global-id ";" + "arrival" date-time + [ "deferred" date-time ] + [ "action" action ] + [ "converted" "(" encoded-info ")" ] + [ "previous" global-id ] + + action = "Relayed" / "Rerouted" / escape + + global-id = c "*" admd [ "*" prmd ] + + encoded-info = 1 encoded-type + + encoded-type = "Undefined" ; undefined (0) + / "Telex" ; tLX (1) + / "IA5-Text" ; iA5Text (2) + / "G3-Fax" ; g3Fax (3) + / "TIF0" ; tIF0 (4) + / "Teletex" ; tTX (5) + / "Videotex" ; videotex (6) + / "Voice" ; voice (7) + / "SFD" ; sFD (8) + / "TIF1" ; tIF1 (9) + / escape + + priority = "normal" / "non-urgent" / "urgent" / escape + + bilateral-info = c "*" admd "*" *text + + importance = "low" / "normal" / "high" / escape + + sensitivity = "Personal" / "Private" + / "Company-Confidential" / escape + + escape = 1*DIGIT + + +Kille [Page 44] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + With the exception of "Bilateral-Info:" and "X400-Trace:", there + must be no more than one of each of these fields in an RFC 822 + header. Any field beginning with the String "Autoforwarded-" is + valid if the field would be syntactically valid with this string + removed. + + The mappings to X.400 are as follows: + + P1-Message-ID: + + Mapped to P1.UMPDUEnvelope.MPDUIdentifier. This take + precedence over any value derived from Message-ID:. + + X400-Trace: + + Mapped to the next component of + P1.UMPDUEnvelope.Traceinformation. Care should be taken to + preserve order. If one or more of these mappings is made, + then a trace component should NOT be generated from the + Date: field which should be redundant. This is because the + message has previously come from X.400, and the Date: + information will be redundant. Note that all trace + information (Received: and "X400-Trace:") in the RFC 822 + message will be in strict order, with the most recent at the + top. This order should be preserved in the mapping. + + Original-Encoded-Information-Types: + + This is used to set P1.UMPDUEnvelope.original. + P1.EncodedInformationTypes.[0] has bits set according to + each of the encoded-info components in this field. Any + escape values should not be encoded. + + P1-Content-Type: + + If the value is anything other than "P2", the mapping should + not be performed (unless the new value has some semantics to + the gateway). + + UA-Content-ID: + + Mapped to P1.UMPDUEnvelope.UAContentID. + + Priority: + + Mapped to P1.UMPDUEnvelope.Priority. An escape value should + be encoded as P1.Priority.normal. + + +Kille [Page 45] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + P1-Recipient: + + If this field is set, the + P1.PerMessageFlag.discloseRecipients bit should be set. Any + of the addresses here which do not correspond to 822-P1 + recipients should be added to the P1 recipient list, with + the responsibility bit turned off. + + Deferred-Delivery: + + Mapped to P1.UMPDUEnvelope.deferredDelivery. Note that the + value of this field should always be in the past, as this + field should only be present in messages which have come + originally from X.400. Thus there should be no implied + action. See also the comments on the reverse mapping. + + Bilateral-Info: + + No attempt is made to reconvert this information back to + X.400. + + Obsoletes: + + Mapped to P2.Heading.obsoletes. + + Expiry-Date: + + Mapped to P2.Heading.expiryDate. + + Reply-By: + + Mapped to P2.Heading.replyBy. + + Importance: + + Mapped to P2.Heading.importance. An escape value should be + encoded as P2.Heading.importance.normal. + + Sensitivity: + + Mapped to P2.Heading.sensitivity. An escape value should be + encoded as P2.Heading.sensitivity.normal. + + Autoforwarded: + + If this field is present and the value is "TRUE", there will + be zero or more field names beginning "Autoforwarded-". + + +Kille [Page 46] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + These should be taken, and the string "Autoforwarded-" + stripped. These fields, in conjunction with the 822-P1 + information should be used to build an IP Message. Any + implied actions should be taken. P2.Heading.autoforwarded is + set in this message. The other RFC 822 fields are used to + build another IP Message, which is used as the single body + part of the first message. This mechanism does not nest. + + 5.3. Return of Contents + + It is not clear how widely supported X.400 return of contents + service will be. However, profiling work suggests that most + systems will not support this service. As this service is + expected in the RFC 822 world, two approaches are specified (it is + not so necessary in the X.400 world, as delivery reports are + distinguished from messages). The choice will depend on the + service level of the X.400 community being serviced by the + gateway. + + In environments where return of contents is widely supported, the + P1.PerMessageFlag content return request bit will be set, and the + Report Request bit in P1.PerRecipientFlag will be set to + Confirmed, for every message passing from RFC 822 -> X.400. The + content return service can then be passed back to the end + (RFC 822) user in a straightforward manner. + + In environments where return of contents is not widely supported, + a gateway must make special provisions to handle return of + contents. For every message passing from RFC 822 -> X.400, the + P1.PerMessageFlag content return request bit will be set, and the + Report Request bit in P1.PerRecipientFlag will be set to + Confirmed. When the delivery report comes back, the gateway can + note that the message has been delivered to the recipient(s) in + question. If a non-delivery report is received, a meaningful + report (containing some or all of the original message) can be + sent to the 822-P1 originator. If no report is received for a + recipient, a (timeout) failure notice should be sent to the 822-P1 + originator. The gateway may retransmit the X.400 message if it + wishes. Delivery confirmations should only be sent back to the + 822-P1 originator if the P1.PerRecipientFlag User Report Request + bit is set to Confirmed. + + + + + + + + +Kille [Page 47] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + 5.4. X.400 -> RFC 822 + + 5.4.1. General + + This section describes how to build a pro-forma message, and + then explains how these defaults may be overridden. It should + be noted that RFC 822 folding of headers should be used in an + appropriate manner. + + 5.4.2. Service MPDU + + 5.4.2.1. Probe + + Any P1.ProbeMPDU should be serviced by the gateway, as there + is no equivalent RFC 822 functionality. The value of the + reply is dependent on whether the gateway could service a + User MPDU with the values specified in the probe. The reply + should make use of P1.SupplementaryInformation to indicate + that the probe was serviced by the gateway. + + 5.4.2.2. Delivery Report + + The 822-P1 components are constructed as follows: + + 822-P1 Originator + + This is set to an 822.addr-spec pointing to an + administrator at the gateway. + + 822-P1 Recipient + + The single recipient is constructed from + P1.DeliveryReportEnvelope.originator, using the + mappings of chapter 4. + + The mandatory RFC 822 headers for an RFC 822 pro-forma are + constructed as follows: + + Date: + + From the P1.DomainSuppliedInfo.arrival component of + the first P1.TraceInformation component. + + From: + + This is set to the same as the 822-P1 originator. An + + + +Kille [Page 48] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + appropriate phrase component may be added (e.g. giving + the name of the gateway). + + To: + + The same as the 822-P1 recipient. + + A Subject: field should be added, which contains some + appropriate words (e.g. "Delivery Report"). + + The other two P1.DeliveryReportEnvelope parameters should be + mapped as follows: + + P1.DeliveryReportEnvelope.report + + This should be mapped to a P1-Message-Id: field. + + P1.DeliveryReportEnvelope.TraceInformation + + Each component should be mapped to an "X400-Trace:" + field. RFC 822 and X.400 ordering should be + maintained (see 5.3). + + The P1.DeliveryReportContent parameters should be mapped to + a series of new RFC 822 headers. These new headers are + intended for processing in the RFC 822 world. No attempt + will be made to reverse the mappings. + + drc-field = "Delivery-Report-Content-Original" + ":" msg-id + / "Delivery-Report-Content-Intermediate-Trace" + ":" x400-trace + / "Delivery-Report-Content-UA-Content-ID" + ":" printablestring + / "Delivery-Report-Content-Billing-Information" + ":" *text + / "Delivery-Report-Content-Reported-Recipient-Info" + ":" drc-info + + drc-info = mailbox ";" + last-trace ";" + "ext" 1*DIGIT + "flags" 2DIGIT + [ "intended" mailbox ] ";" + [ "info" printablestring ] + + + + +Kille [Page 49] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + last-trace = drc-report ";" + date-time ";" + [ "converted" "(" encoded-info ")" + + drc-report = "SUCCESS" drc-success + / "FAILURE" drc-failure + + drc-success = date-time ";" 1*DIGIT + + drc-failure = *text [ ";" *text ] ";" + + There may be multiple + "Delivery-Report-Content-Intermediate-Trace:" and + "Delivery-Report-Content-Reported-Recipient-Info:" fields. + The msg-id for "Delivery-Report-Content-Original" is derived + according to the mapping of chapter 4. EBNF.drc-failure may + use numeric values or textual explanation. The latter is + preferred. All P1.DeliveryReportContent parameters are + mapped to the corresponding component. The order of + "Delivery-Report-Content-Intermediate-Trace:" should have + the most recently stamped one first. + + The body of the RFC 822 message should be a human readable + description of the critical parts of the + P1.DeliveryReportContent. In particular, the failed + recipients, and failure reason should be given. Some or all + of the original message should be included in the delivery + report. The original message will be available at the + gateway, as discussed in section 5.3. + + 5.4.3. User MPDU + + These elements are the basis for both Status Report and IP + Message. + + The 822-P1 components are constructed as follows: + + 822-P1 Originator + + This is derived from P1.UMPDUEnvelope.originator. + + 822-P1 Recipient + + Each recipient is constructed from the P1.RecipientInfo, + as described in chapter 4. This describes actions as + well as format mappings. + + + +Kille [Page 50] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + The mandatory RFC 822 field pro-forma is derived as follows. + In most cases where the P1.UMPDUContent is an IP Message, these + defaults will be overridden: + + Date: + + From the P1.DomainSuppliedInfo.arrival component of the + first P1.TraceInformation component. + + From: + + From the P1.UMPDUEnvelope.originator, as defined in + chapter 4. + + To: + + This default is only required if the generated RFC 822 + message has no destination specification. If + P1.PerMessageFlag.discloseRecipients is set then it + should contain the ORName in each P1.RecipientInfo + component. If it is not set, the it should be set to + "To: No Recipients Specified : ;". + + The mappings, and any actions for each P1.UserMPDU element is + now considered. + + P1.MPDUIdentifier + + Mapped to the extended RFC 822 field "P1-Message-ID:". + Note that the sequence CRLF is mapped to SPACE, which + makes the mapping irreversible for such cases. + + P1.UMPDUEnvelope.original + + Mapped to the extended RFC 822 field + "Original-Encoded-Information-Types:". If it contains + only P2.IA5Text, the RFC 822 field may be omitted. + + P1.ContentType + + As this can currently only have one value, it is not + mapped, on the basis that it is redundant. If the field + contains any value other than P2, then the UMPDU should + be rejected. + + + + + +Kille [Page 51] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + P1.UAContentID + + Mapped to the extended RFC 822 field "UA-Content-Id:". + + P1.Priority + + Mapped to the extended RFC 822 field "Priority:". + + P1.PerMesageFlag + + This has a number of components: + + - discloseRecipients + + If this bit is set, a "P1-Recipient:" field should + be generated, and contain each of the P1 + recipients. + + - conversionProhibited + + If this bit is set, the message should be rejected + if it contains P2.BodyPart which is not P2.IA5Text + or P2.ForwardedIPMessage. + + - alternateRecipientAllowed + + The value of this bit is ignored. + + - contentReturnRequest + + The value of this bit is ignored. + + P1.UMPDUEnvelope.deferredDelivery + + This should be mapped to the extended RFC 822 field + "Deferred-Delivery:". X.400 profiles, and in particular + the CEN/CENELEC profile [CEN/CENELEC/85a], specify that + this element must be supported at the first MTA. Thus, + it is expected that the value of this element will always + be in the past. If it is not, the function may + optionally be implemented by the gateway: that is, the + gateway should hold the message until the time specified + in the protocol element. Thus the extended RFC 822 field + is just for information. + + + + + +Kille [Page 52] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + P1.PerDomainBilateralInformation + + Each component should be encoded in the extended RFC 822 + field "Bilateral-Info:". P1.BilateralInfo should be + mapped into ASCII in a manner appropriate to its + contents. This submapping is not reversible. + + P1.TraceInformation + + This should be mapped to "X400-Trace:", as for the + delivery report. + + 5.4.4. Status Report + + The entire status report is mapped into the body of the RFC 822 + message, in the same manner as for a Delivery Report. An + appropriate "Subject:" field should be generated. As status + reports cannot be requested from the RFC 822 world, the mapping + is not likely to be used a great deal. + + 5.4.5. IP Message + + The P1.UMPDUEnvelope pro-forma specification ensures all the + 822-P1 information, and a minimal (legal) RFC 822 message. The + mappings and actions for the P2.Heading components are now + described. Basically, these are interpreted as actions and/or + mappings into RFC 822 fields. The following mappings are + specified: + + P2.IPMessageID + + This is mapped to the field "Message-ID:", according to + section 4. + + P2.Heading.originator + + If P2.Heading.authorisingUsers is present this is mapped + to Sender:, if not to From:. + + P2.Heading.authorisingUsers + + Mapped to From:. + + P2.Heading.primaryRecipients + + Mapped to To:. + + + +Kille [Page 53] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + P2.Heading.copyRecipients + + Mapped to Cc:. + + P2.Heading.blindCopyRecipients + + Mapped to Bcc:. + + P2.Heading.inReplyTo + + Mapped to In-Reply-To:. + + P2.Heading.obsoletes + + Mapped to the extended RFC 822 field "Obsoletes:" + + P2.Heading.crossReferences + + Mapped to References:. + + P2.Heading.subject + + Mapped to subject. The contents are converted to ASCII + (as defined in chapter 3). Any CRLF are not mapped, but + are used as points at which the subject field must be + folded. line. + + P2.Heading.expiryDate + + Mapped to the extended RFC 822 field "Expiry-Date:". + + P2.Heading.replyBy + + Mapped to the extended RFC 822 field "Reply-By:". + + P2.Heading.replyToUsers + + Mapped to Reply-To:. + + P2.Heading.importance + + Mapped to the extended RFC 822 field "Importance:". + + P2.Heading.sensitivity + + Mapped to the extended RFC 822 field "Sensitivity:". + + + +Kille [Page 54] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + P2.Heading.autoforwarded + + If it is set to FALSE, it is simply mapped to the + extended RFC 822 field "Autoforwarded:". If this is set + to TRUE, the P2.Body does not consist of a single + P2.ForwardedIPMessage, then there is an X.400 error, and + the message should be bounced. Otherwise the following + steps are taken. + + 1. The mappings for all of the message, except the + body part are completed. + + 2. Prepend each RFC 822 fieldname with the string + "Autoforwarded-". Mapped to the extended RFC 822 + field "Autoforwarded:". + + 3. Add the field "Autoforwarded:" with value TRUE. + + 4. Convert the syntax of the P2.ForwardedIPMessage to + generate the remaining RFC 822 fields. + + The P2.Body is mapped into the RFC 822 message body. Each + P2.BodyPart is converted to ASCII. If the P2.Body contains a + P2.BodyPart not listed here, the entire message should be + rejected. If there are exactly two P2.IA5Text body parts, and + the first line of the first is "RFC-822-Headers:", then the + rest of this first body part should be treated as additional + header information for the RFC 822 message. If there is an + "In-Reply-To:" field, this should be used to replace any + generated In-Reply-To: field. + + In other cases of multiple P2.BodyPart, the mapping defined by + Rose and Stefferud in [Rose85b], should be used to separate the + P2.BodyParts in the single RFC 822 message body. + + Individual body parts are mapped as follows: + + P2.IA5Text + + The mapping is trivial. + + P2.TTX + + If any P1.Teletex.NonBasicParams are set, the message + should be rejected. Otherwise, it should be converted to + ASCII according to chapter 3. + + + +Kille [Page 55] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + P2.SFD + + An SFD should be converted to ASCII as if it was being + rendered on an 79 column ASCII only VDU. It seems likely + that many gateways will not support this conversion. In + these cases, the message should be rejected. + + P2.ForwardedIPMessage + + The P2.ForwardedIPMessage.delivery and + P2.ForwardedIPMessage.DeliveryInformation are + discarded <9>. The IM-UAPDU should have its syntax + mapped (recursively) according to this gatewaying + specification. Clearly, it makes no sense to apply any + of the actions defined here. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Kille [Page 56] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + +Appendix A -- Quoted String Encodings + + This Appendix describes a quoting mechanism which may be used to + allow general interworking between RFC 822, and variants of RFC 822 + which do not support 822.quoted-string. This is important, as the + basic X.400 <-> RFC 822 mapping makes use of 822.quoted-string. + + 1. ASCII <-> 822.atom + + The following EBNF is specified. + + atom-encoded = *( a-char / a-encoded-char ) + a-char = + a-encoded-char = "_" ; (space) + / "#u#" ; (_) + / "#l#" ; <(> + / "#r#" ; <)> + / "#m#" ; (,) + / "#c#" ; (:) + / "#b#" ; (\) + / "#h#" ; (#) + / "#e#" ; ($=) + / "#s#" ; ($/) + / "#" 3DIGIT "#" + + NOTE: There are two encodings of double characters. This is so + that systems using this encoding, do not also need to know about + the "$" quoting mechanism defined in chapter 4. + + The 822.3DIGIT in EBNF.a-encoded-char must have range 0-127 + (Decimal), and is interpreted in decimal as the corresponding + ASCII character. The choice of special abbreviations (as opposed + to octal encoding) provided is based on the manner in which this + mapping is most frequently used: encoding PrintableString + components of O/R names as atom. Therefore, there are special + encodings for each of the PrintableString characters not in + EBNF.a-char, except ".". Space is given a single character + encoding, due to its (expected) frequency of use, and backslash as + the RFC 822 single quote character. + + To encode (ASCII -> atom): all EBNF.a-char are used directly and + all other CHAR are encoded as EBNF.a-encoded-char. To decode + (822.atom -> ASCII): if 822.atom can be parsed as + EBNF.encoded-atom reverse the previous mapping. If it cannot be + so parsed, map the characters directly. + + + +Kille [Page 57] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + 2. 822.local-part <-> ASCII + + A related transformation is for 822.local-part (or other element + defined as '822.word ("." 822.word)') where not 822.quoted-text is + used. To encode (ASCII -> 822.local-part), all EBNF.a-char and + "." are used directly and all other 822.CHAR are encoded as + EBNF.a-encoded-char. To decode (822.local-part -> ASCII), first + attempt to parse 822.local-part as '822.atom *("." 822.atom)'. If + this fails, or if each 822.atom cannot be parsed as + EBNF.atom-encoded then map each character directly. Otherwise map + each "." directly, and each atom as in the previous section. + + There are places where it is needed to convert between + PrintableString or IA5Text (X.400), and 822.word (RFC 822). word + may be encoded as 822.atom (which has a restricted character set) + or as 822.quoted-string, which can handle all ASCII characters. + If 822.quoted-string is used, clearly the mappings for + PrintableString defined in Chapter 3 provide a straightforward + mapping. However, some RFC 822 based networks cannot handle the + 822.quoted-string format in all cases. This Appendix is for use + in these cases. The major requirement for this mapping is the + UNIX world, but it may well be needed in other places. + + These mappings are somewhat artificial, and their usage is + discouraged, except in cases where there is no alternative. + + + + + + + + + + + + + + + + + + + + + + + + +Kille [Page 58] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + +Appendix B -- Mappings Specific to JNT Mail + + This Appendix is specific to the JNT Mail Protocol. It describes + specific changes in the context of this protocol. Addressing is not + discussed here, as it is covered in Appendix A. + + 1. Introduction + + There are four aspects of a gateway which are JNT Mail Specific, + in addition to those relating to addressing. These are each given + a section of this appendix. + + 2. Acknowledge-To: + + This field has no direct functional equivalent in X.400. However, + it can be supported to an extent, and can be used to improve X.400 + support. + + When going from JNT Mail to X.400, the User Report Request bits of + each P1.RecipientInfo.perRecipientFlag should be set to confirmed. + If there is more that one address in the Acknowledge-To: field, or + if the one address is not equivalent to the 822-P1 return address, + then: + + a. Acknowledgement(s) should be generated by the gateway. + The text of these acknowledgements should indicate that + they are generated by the gateway. + + b. The Acknowledge-To: field should also be passed in the + first P2.BodyPart. + + When going from X.400 to JNT Mail, in cases where + P1.RecipientInfo.perRecipientFlag has the user bits set to + confirmed the copy of the message to that recipient should have an + Acknowledge-To: field containing the P.UMPDUEnvelope.originator. + No attempt should be made to map Receipt notification requests + onto Acknowledge-To:. This is because no association can be + guaranteed between P2 and P1 level addressing information. + + 3. Trace + + JNT Mail trace uses the Via: syntax. When going from JNT Mail to + X.400, the following mapping onto P1.TraceInformation is used. + + P1.DomainSuppliedInfo.action is set to relayed. + + P1.DomainSuppliedInfo.arrival is set to the date-time component + + +Kille [Page 59] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + of the Via: field. P1.DomainSuppliedInfo.previous has + P1.CountryName as a null string, and + P1.AdministrationDomainName as the domain specified in the Via: + field. + P1.TraceInformation.GlobalDomainIdentifier has P1.CountryName + as a null string, and P1.AdministrationDomainName as any + commented information in the Via: field. For example: + + Via: UK.AC.Edinburgh ; 17 Jun 85 9:15:29 BST (EMAS V7) + + maps to - + + P1.GlobalDomainIdentifier + CountryName = "" + AdministrationDomainName = "(EMAS V7)" + P1.DomainSuppliedInfo + arrival = 17 Jun 85 9:15:29 BST + action = relayed + previous + CountryName = "" + AdministrationDomainName = "UK.AC.Edinburgh" + + 4. Timezone specification + + The extended syntax of zone defined in the JNT Mail Protocol + should be used in the mapping of UTCTime defined in chapter 3. + + 5. Lack of separate 822-P1 originator specification + + In JNT Mail the default mapping of the P1.MPDUEnvelope.originator + is to the Sender: field. This can cause a problem if the mapping + of P2.Heading has already generated a Sender: field. To overcome + this, new extended JNT Mail field is defined. This is chosen to + align with the JNT recommendation for interworking with full + RFC 822 systems [Kille84b]. + + original-sender = "Original-Sender" ":" mailbox + + If an IPM has no P2.heading.authorisingUsers component and + P2.Heading.originator.ORName is different from + P1.UMPDUEnvelope.originator, map P1.MPDUEnvelope.originator onto + the Sender: field. + + If an IPM has a P2.heading.authorisingUsers component, and + P2.Heading.originator.ORName is different from + P1.UMPDUEnvelope.originator, P1.MPDUEnvelpoe.originator should be + + + +Kille [Page 60] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + mapped onto the Sender: field, and P2.Heading.originator mapped + onto the Original-Sender: field. + + In other cases the P1.MPDUEnvelope.Originator is already correctly + represented. + + Note that in some pathological cases, this mapping is + asymmetrical. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Kille [Page 61] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + +Appendix C -- Mappings Specific to Internet Mail + + The Simple Mail Transfer Protocol [Postel82a] is used in the + ARPA-Internet, and in any network following the US DoD standards for + internetwork protocols. This appendix is specific to those hosts + which use SMTP to exchange mail. + + 1. Mapping between O/R names and SMTP addresses + + The mappings of Chapter 4 are to be used. + + 2. Use of the ARPA Domain System + + Whenever possible, domain-qualified addresses should be be used to + specify encoded O/R names. These domain encodings naturally + should be independent of any routing information. + + 3. Identification of gateways + + The ARPA-Internet Network Information Center (NIC) will maintain a + list of registered X.400 gateways in the ARPA Internet. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Kille [Page 62] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + +Appendix D -- Mappings Specific to Phonenet Mail + + There are currently no mappings specific to Phonenet Mail. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Kille [Page 63] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + +Appendix E -- Mappings Specific to UUCP Mail + + Gatewaying of UUCP and X.400 is handled by first gatewaying the UUCP + address into RFC 822 syntax (using RFC 976) [Horton86a] and then + gatewaying the resulting RFC 822 address into X.400. For example, an + X.400 address + + Country US + Organization Xerox + Personal Name John Smith + + might be expressed from UUCP as + + inthop!gate!gatehost.COM!/C=US/O=Xerox/PN=John.Smith/ + + (assuming gate is a UUCP-ARPA gateway and gatehost.COM is an + ARPA-X.400 gateway) or + + inthop!gate!Xerox.COM!John.Smith + + (assuming that Xerox.COM and /C=US/O=Xerox/ are equivalent.) + + In the other direction, a UUCP address Smith@ATT.COM, integrated into + 822, would be handled as any other 822 address. A non-integrated + address such as inthop!dest!user might be handled thought a pair of + gateways: + + Country US + ADMD ATT + PRMD ARPA + Organization GateOrg + RFC-822 inthop!dest!user@gatehost.COM + + or through a single X.400 to UUCP gateway: + + Country US + ADMD ATT + PRMD UUCP + Organization GateOrg + UUCP inthop!dest!user + + + + + + + + + +Kille [Page 64] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + +Appendix F -- Format of Address Mapping Tables + + There is a need to specify the association between the domain and + X.400 namespaces described in 4.2.1. This is defined as a table + syntax, but the syntax is defined in a manner which makes it suitable + for use with domain nameservers (such as the DARPA Domain nameservers + or the UK NRS). The symmetry of the mapping is not clear, so a + separate table is specified for each direction. For domain -> X.400: + + domain-syntax "#" dmn-orname "#" + + For example: + + AC.UK#PRMD$DES.ADMD$BT.C$UK# + XEROX.COM#O$Xerox.ADMD$ATT.C$US# + + For X.400 -> domain: + + dmn-orname "#" domain-syntax "#" + + EBNF.domain-syntax will be interpreted according to RFC 920. + EBNF.dmn-orname will have components ordered as defined in section + 4.2.1, and with the most significant component on the RHS. + + + + + + + + + + + + + + + + + + + + + + + + + + +Kille [Page 65] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + +References + + Bonacker85a. + + K.H. Bonacker, U. Pankoke-Babatz, and H. Santo, "EAN - Conformity + to X.400 and DFN-Pflichtenheft," GMD (Gesellschaft fur Mathematik + und Datenverarbeitung) report, June 1985. + + CCITT84a. + + CCITT SG 5/VII, "Recommendations X.400," Message Handling Systems: + System Model - Service Elements, October 1984. + + CCITT84b. + + CCITT SG 5/VII, "Recommendations X.411," Message Handling Systems: + Message Transfer Layer, October 1984. + + CCITT84c. + + CCITT SG 5/VII, "Recommendations X.420," Message Handling Systems: + Interpersonal Messaging User Agent Layer, October 1984. + + CCITT84d. + + CCITT SG 5/VII, "Recommendations X.409," Message Handling Systems: + Presentation Transfer Syntax and Notation, October 1984. + + CEN/CENELEC/85a. + + CEN/CENELEC/Information Technology/Working Group on Private + Message Handling Systems, "FUNCTIONAL STANDARD A/3222," + CEN/CLC/IT/WG/PMHS N 17, October 1985. + + Crocker82a. + + D.H. Crocker, "Standard of the Format of ARPA Internet Text + Messages," RFC 822, August 1982. + + Horton85a. + + M.R. Horton, "Draft Standard for ARPA/MHS Addressing Gateways," + AT&T Bell Laboratories, October 1985. + + + + + + +Kille [Page 66] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + Horton86a. + + M.R. Horton, "UUCP Mail Interchange Format Standard", RFC 976, + February 1986. + + ICL84a. + + ICL, "Comparison of service elements of Grey Book Mail and X.400," + Mailgroup Note 18: Extract from unpublished report for ITSU + (Information Technology Standards Unit), July 1984. + + Kille84a. + + S.E. Kille, (editor), JNT Mail Protocol (revision 1.0), Joint + Network Team, Rutherford Appleton Laboratory, March 1984. + + Kille84b. + + S.E. Kille, "Gatewaying between RFC 822 and JNT Mail," JNT + Mailgroup Note 15, May 1984. + + Kille86a. + + S.E. Kille, "O/R Names in the UK Academic Community," UK Working + Document, March 1986. + + Larmouth83a. + + J. Larmouth, "JNT Name Registration Technical Guide," Salford + University Computer Centre, April 1983. + + Neufeld85a. + + G. Neufeld, J. Demco, B. Hilpert, and R. Sample, "EAN: an X.400 + message system," in Second International Symposium on Computer + Message Systems, Washington, pp. 1-13, North Holland, + September 1985. + + Postel82a. + + J. Postel, "Simple Mail Transfer Protocol," RFC 821, August 1982. + + Postel84a. + + J. Postel and J. Reynolds, "Domain Requirements," RFC 920, + October 1984. + + + +Kille [Page 67] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + + Rose85a. + + M.T. Rose, "Mapping Service Elements between ARPA and MHS," Draft + proposal, October 1985. + + Rose85b. + + M.T. Rose and E.A. Stefferud, "Proposed Standard for Message + Encapsulation," RFC 934, January 1985. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Kille [Page 68] + + + +RFC 987 June 1986 +Mapping between X.400 and RFC 822 + + +Notes: + + <0> UNIX is a trademark of Bell Laboratories. + + <1> The term gateway is used to describe a component performing the + protocol mappings between RFC 822 and X.400. This is standard + usage amongst mail implementors, but should be noted carefully + by transport and network service implementors. (Sometime called + a "mail relay".) + + <2> If the remote protocol is JNT Mail, a notification may also be + sent by the recipient UA. + + <3> The asymmetry occurs where an ASCII string contains the sequence + EBNF.ps-encoded-char. This would be mapped directly to + PrintableString, but the reverse mapping would be to the value + implied by the sequence. + + <4> It might be suggested that for reasons of elegance, + EBNF.ps-delim (left parenthesis) is encoded as + EBNF.ps-encoded-char. This is not done, as it it would never be + possible to represent a PrintableString containing the character + "(" in ASCII. This is because an "(" in ASCII would be mapped + to the encoding in PrintableString. + + <5> In practice, a gateway will need to parse various illegal + variants on 822.date-time. In cases where 822.date-time cannot + be parsed, it is recommended that the derived UTCTime is set to + the value at the time of translation. + + <6> P2.ORname is defined as P1.ORName. + + <7> This recommendation may change in the light of CCITT or + CEN/CENELEC guidelines on the use of initials. + + <8> It would be possible to use a ForwardedIPMessage for these + fields, but the semantics are (arguably) slightly different, and + it is probably not worth the effort. + + <9> Although this violates chapter 1, part 4, principles 2 and 3, it + is suggested that this is justified by principle 1. + + + + + + + + +Kille [Page 69] + \ No newline at end of file -- cgit v1.2.3