summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc987.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc987.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc987.txt')
-rw-r--r--doc/rfc/rfc987.txt3933
1 files changed, 3933 insertions, 0 deletions
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*<ps-char not including ".">
+
+ 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 = <ps-delim, and any ps-char except "/"
+ and "=">
+ std-pair = "$" ( ps-delim / ps-char )
+
+ If the type is PN, the value is interpreted according to
+ EBNF.encoded-pn, and the components of P1.PersonalName derived
+ accordingly. If the value is registered-dd-type, if the value
+ is registered at the SRI NIC as an accepted Domain Defined
+ Attribute type, then the value should be interpreted
+ accordingly. This restriction maximises the syntax checking
+ which can be done at a gateway.
+
+ Another syntax is now defined. This is intended to be
+ compatible with the syntax used for 822.domains. This syntax
+ is not intended to be handled by users.
+
+ dmn-orname = dmn-part *( "." dmn-part )
+ dmn-part = attribute "$" value
+ attribute = standard-type
+ / "~" dmn-printablestring
+ value = dmn-printablestring
+ dmn-printablestring =
+ = *( dmn-char / dmn-pair )
+ dmn-char = <ps-delim, and any ps-char except ".">
+ 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 = <ALPHA or DIGIT>
+ alphanumhyphen = <ALPHA or DIGIT or HYPHEN>
+
+ 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 = <any CHAR except specials, SPACE,
+ CTL, "_", and "#">
+ 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