Network Working Group H. Alvestrand Request for Comments: 1494 SINTEF DELAB S. Thompson Soft*Switch, Inc. August 1993
Equivalences between 1988 X.400 and RFC-822 Message Bodies
Status of this Memo
This RFC specifies an IAB standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "IAB Official Protocol Standards" for the standardization state and status of this protocol. Distribution of this memo is unlimited.
Table of Contents
1. Introduction ............................................. 2 2. Equivalence Table Definition ............................. 2 3. Generic conversions ...................................... 3 3.1. Byte copy .............................................. 3 3.2. Text Conversion ........................................ 3 3.3. Image Conversion ....................................... 3 3.4. Tunneling .............................................. 3 4. Conversion Table for known X.400 and MIME Types ......... 4 4.1. MIME to X.400 Table .................................... 4 4.2. X.400 to MIME Table .................................... 4 5. Newly defined X.400 Body Parts ........................... 5 5.1. Use of OBJECT IDENTIFIERs and ASN.1 MACROS ............. 5 5.2. The Generic MIME Extended Body Part .................... 6 5.3. The PostScript body part ............................... 7 5.4. The JPEG body part ..................................... 7 5.5. The GIF body part ...................................... 8 6. Newly defined MIME content-types ......................... 8 6.1. The application/x400-bp content-type ................... 8 6.2. The image/g3fax content-type ........................... 9 6.2.1. G3Fax Parameters ..................................... 9 6.2.2. Content Encoding ..................................... 10 6.3. The Application/ODA content-type ....................... 11 7. Equivalence Definitions ................................... 11 7.1. IA5Text - text/plain .................................... 11 7.2. GeneralText - text/plain (ISO-8859) ..................... 12 7.3. BilaterallyDefined - application/octet-stream .......... 13 7.4. ODA - application/oda ................................... 14 7.5. g3-facsimile - image/g3fax .............................. 15 7.6. application/postscript - postscript-body-part .......... 16 7.7. application/jpeg - jpeg-body-part ....................... 16
Alvestrand & Thompson [Page 1]
RFC 1494 X.400/MIME Body Equivalences August 1993
7.8. image/gif - gif-body-part ............................... 16 8. OID Assignments ........................................... 17 9. IANA Registration form for new mappings ................... 17 10. Security Considerations .................................. 18 11. Authors' Addresses ....................................... 18 12. References ............................................... 19
This document is a companion to [1], which defines the principles behind interworking between MIME-based RFC-822 mail and X.400 mail. This document describes the content of the "IANA MHS/MIME Equivalence table" referenced in the companion document, and defines the initial configuration of this table. Mappings for new MIME content-types and/or X.400 body part types should be registered with the IANA to minimize redundancy and promote interoperability.
In MIME, the term "content-type" is used to refer to an information object contained in the body of a message. In contrast, X.400 uses the term "body part type." In this document, the term "body part" is used to refer to either.
Please send comments to the MIME-MHS mailing list: <mime-mhs@surfnet.nl>.
For each MIME content-type/X.400 body part pair, the Equivalence Table will contain an entry with the following sections:
X.400 Body Part This section identifies the X.400 Body Part governed by this Table entry. It includes any OBJECT IDENTIFIERs or other parameters necessary to uniquely identify the Body Part.
MIME Content-Type This section identifies the MIME content-type governed by this Table entry. The MIME content-type named here must be registered with the IANA.
Conversion Type This section identifies the type of conversion applied. See the section on Generic Conversions for an explanation of the possible values.
Alvestrand & Thompson [Page 2]
RFC 1494 X.400/MIME Body Equivalences August 1993
Comments (optional) This section gives any additional commentary that might be useful in understanding the mapping between the X.400 and MIME representations.
The initial Equivalence Table entries in this document are described using this convention. Any future submissions to the IANA should follow this format.
This is the trivial case, that is, no conversion at all. The byte stream is simply copied between MIME and X.400.
This is the preferred conversion, since it is the simplest.
Implementors and vendors will be registering OBJECT IDENTIFIERs and MIME content-types for their various objects. They are STRONGLY ENCOURAGED to specify their content formats such that a gateway can use Byte Copy to map between them.
Note that in some cases, it is necessary to define exactly which ASN.1 construct to replace with the content of the MIME object.
This type of conversion applies to text objects that cannot be mapped using a simple Byte Copy. Conversion involves scanning and reformatting the object. For example, the MIME and X.400 objects might differ in their encoding of nonstandard characters, or line or page breaks.
This conversion type applies to raster images, like Group 3 Facsimile or JPEG. Again, it differs from Byte Copy in that it involves scanning reformatting the byte stream. It differs from Text Conversion in that it is pixel- oriented, rather than character- oriented.
X.400 Basic Body Part MIME content-type Section --------------------- -------------------- ------- ia5-text text/plain;charset=us-ascii 7.1 voice No Mapping Defined 6.1 g3-facsimile image/g3fax 6.2, 7.5 g4-class1 no mapping defined 6.1 teletex no mapping defined 6.1 videotex no mapping defined 6.1 encrypted no mapping defined 6.1 bilaterally-defined application/octet-stream 7.3 nationally-defined no mapping defined 6.1 externally-defined See Extended Body Parts 6.1
X.400 Extended Body Part MIME content-type Section ------------------------- -------------------- ------- GeneralText text/plain;charset=iso-8859-x 7.2 ODA application/oda 7.4 mime-postscript-body application/postscript 5.3, 7.6 mime-jpeg-body image/jpeg 5.4, 7.7 mime-gif-body image/gif 5.5, 7.8
(1) use OBJECT IDENTIFIERs (OIDs) to uniquely identify the contents, and
(2) be defined by using the ASN.1 Macro:
EXTENDED-BODY-PART-TYPE MACRO::= BEGIN TYPE NOTATION ::= Parameters Data VALUE NOTATION ::= value (VALUE OBJECT IDENTIFIER)
Parameters ::= "PARAMETERS" type "IDENTIFIED" "BY" value(OBJECT IDENTIFIER) | empty; Data ::= "DATA" type END
To meet these requirements, this document uses the OID
mime-mhs-bodies
defined in [1], as the root OID for X.400 Extended Body Parts defined for MIME interworking.
Each Extended Body Part contains Data and optional Parameters, each being named by an OID. To this end, two OID subtrees are defined under mime-mhs-bodies, one for Data, and the other for Parameters:
All definitions of X.400 body parts submitted to the IANA for registration must use the Extended Body Part Type macro for the definition. See the next section for an example.
Alvestrand & Thompson [Page 5]
RFC 1494 X.400/MIME Body Equivalences August 1993
Lastly, the IANA will use the mime-mhs-bp-data and mime-mhs-bp- parameter OIDs as root OIDs for any new MIME content-type/subtypes that aren't otherwise registered in the Equivalence Table.
To convert the MIME content-type into the X.400 mime- body-part:
(1) Copy the "type/subtype" string from the MIME Content-Type: header field into MimeParameters.content-type
(2) For each "parameter=value" string in the MIME Content-Type header field, create a MimeParameters.content-parameters structure, and copy the "parameter" string into MimeParameters.content- parameters.parameter field and the "value" string into the paired MimeParameters.content- parameters.parameter-value field.
(3) Convert the MIME body part into its canonical form.
Alvestrand & Thompson [Page 6]
RFC 1494 X.400/MIME Body Equivalences August 1993
(See appendix H of RFC 1341 [3] for a discussion of canonical in this context.) Said another way, reverse the transfer encoding to recover the original byte stream.
(4) Copy the canonical byte stream into the mime-body- part.data octet string.
(5) Remove the Content-type and the Content-transfer- encoding header fields from the MIME body part's RFC822 header.
(6) Any header fields starting with "Content-" in the MIME body part is placed in the optional other- header-fields structure. Note that this can only occur when the MIME content-type occurs as part of a "multipart" content-type.
The mapping from the X.400 mime-body-part to a MIME content-type is the inverse of the above steps.
This content-type is defined to carry any X.400(88) body part for which there is no registered IANA mapping.
The content-type field is
application/x400-bp
The parameters are:
bp-type=<INTEGER or OBJECT IDENTIFIER>
The body contains the raw ASN.1 IPM.body octet stream, including the initial tag octet.
If the body is a basic body part, the bp-type parameter is set to the number of the body part's context-specific tag, that is, the tag of the IPMS.Body.BodyPart component.
If the body is an Extended Body Part, the bp-type parameter is set to the OBJECT IDENTIFIER from
application/x400-bp will need a content-transfer-encoding of base64 or quoted-printable when carried in 7-bit MIME. Since there is no way to know beforehand the content, it is recommended to just inspect the first 1 KByte or so of data and choose the one that seems to produce the more compact encoding.
This content-type is defined to carry G3 Facsimile byte streams.
In general, a G3Fax image contains 3 pieces of information:
(1) A set of flags indicating the particular coding scheme. CCITT Recommendation T.30 defines how the flags are transmitted over telephones. In this medium, the flags are carried as parameters in the MIME content-type header field.
(2) A structure that divides the bits into pages. CCITT recommendation T.30 describes how to define page boundaries. A page break algorithm is defined here that is independent of how the image data is conveyed.
(3) For each page, a sequence of bits that form the encoding of the image. CCITT recommendation T.4 defines the bit image format. This is used without change.
It is possible (but misleading) to view the representation of these values as single-bit flags. They correspond to the following bits of the T.30 control string and X.400 G3FacsimileParameters:
Parameter T.30 bit X.400 bit
page-length=A4 no bit set page-length=B4 19 21 page-length=Unlimited 20 20
page-width=A4 no bit set page-width=A3 18 22 page-width=B4 17 23
encoding=1-dimensional no bit set encoding=2-dimensional 16 8 encoding=Uncompressed 26 30
resolution=Coarse no bit set resolution=Fine 15 9
The reason for the different bit numbers is that X.400 counts bits in an octet from the MSB down to the LSB, while T.30 uses the opposite numbering scheme.
If any bit but these are set in the Device Control String, the DCS parameter should be supplied.
X.400 defines the g3-facsimile data stream as a SEQUENCE of BIT STRINGs. Each BIT STRING is a page of facsimile image data, encoded as defined by Recommendation T.4. The following content encoding is reversible between MIME and X.400 and ensures that page breaks are
Each page of the message is delimited by a sequence of six (6) EOLs that MUST start on a byte boundary. The image bit stream is padded as needed to achieve this alignment.
Searching for the boundary is a matter of searching for the byte sequence (HEX) 00 10 01 00 10 01 00 10 01, which cannot occur inside the image.
See Section 7.5 for the algorithm on conversion between this encoding and the X.400 encoding.
The Base64 content-transfer-encoding is appropriate for carrying this content-type.
The "ODA" subtype of application is used to indicate that a body contains information encoded according to the Office Document Architecture [4] standards, using the ODIF representation format. For application/oda, the Content- Type line should also specify an attribute/value pair that indicates the document application profile (DAP), using the key word "profile", and the document class, using the keyword "class".
For the keyword "class", the values "formatted", "processable" and "formatted-processable" are legal values.
Thus an appropriate header field might look like this:
X.400 Body Part: IA5Text MIME Content-type: text/plain; charset=US-ASCII
Alvestrand & Thompson [Page 11]
RFC 1494 X.400/MIME Body Equivalences August 1993
Conversion Type: Byte copy Comments:
When mapping from X.400 to MIME, the "repertoire" parameter is ignored.
When mapping from MIME to X.400, the "repertoire" parameter is set to IA5 (5).
NOTE: The MIME Content-type headers are omitted, when mapping from X.400 to MIME, if and only if the IA5Text body part is the only body part in the IPMS.Body sequence.
NOTE: IA5Text specifies the "currency" symbol in position 2/4. This is converted without comment to the "dollar" symbol, since the author of this document has seen many documents in which the position was intended to indicate "dollar" while he has not yet seen one in which the "currency" symbol is intended.
(For reference: The T.50 (1988) recommendation, which defines IA5, talks about ISO registered set number 2, while ASCII, using the "dollar" symbol, is ISO registered set number 6. There are no other differences.)
X.400 Body Part: GeneralText; CharacterSets in 6,100,101,109,110,126,127,138,144,148 MIME Content-Type: text/plain; charset=ISO-8859-(1-9) Conversion Type: Byte copy Comments:
When mapping from X.400 to MIME, the character-set chosen from table below according to the value of Parameters.CharacterSets.
When mapping from MIME to X.400, GeneralText is an Extended Body Part, hence it requires an OID. The OID for the GeneralText body is defined in [5], part 8, annex D, as {2 6 1 4 11}. The OID for the parameters is {2 6 1 11 11}.
The Parameters.CharacterSets is set from table below according to the value of "charset"
NOTE: The GeneralText body part is defined in ISO 10021-8 [5], and NOT in the corresponding CCITT recommendation. Its parameters were heavily modified in a defect report, and will be a SET OF INTEGER (indicating the ISO registry numbers of all the used sets) in the next version of the standard.
Alvestrand & Thompson [Page 12]
RFC 1494 X.400/MIME Body Equivalences August 1993
The following table lists the MIME character sets and the corresponding ISO registry numbers. If no correspondence is found, this conversion fails, and the generic body part approach is used.
MIME charset ISO IR numbers Comment ----------------------------------------------- ISO-8859-1 6, 100 West European "8-bit ASCII" ISO-8859-2 6, 101 East European ISO-8859-3 6, 109 <regarded as obsolete> ISO-8859-4 6, 110 <regarded as obsolete> ISO-8859-5 6, 144 Cyrillic ISO-8859-6 6, 127 Arabic ISO-8859-7 6, 126 Greek ISO-8859-8 6, 138 Hebrew ISO-8859-8 6, 148 Other Latin-using languages
When converting from MIME to X.400, generate the correct OIDs for use in the message envelope's Encoded Information Types by looking up the ISO IR number in the above table, and then appending it to the id- cs-eit-authority {1 0 10021 7 1 0} OID.
The escape sequences to designate and invoke the relevant character sets in their proper positions must be added to the front of the GeneralText character string.
X.400 Body Part: BilaterallyDefined MIME Content-Type: Application/Octet-Stream (no parameters) Conversion Type: Byte copy Comments:
When mapping from MIME to X.400, if there are parameters present in the Content-Type: header field, the conversion fails since the BilaterallyDefined Body Part does not have any corresponding ASN.1 parameters.
DISCUSSION: The parameters "name" "type" and "conversions" are advisory, but may in some cases give vital hints on the expected handling of the file. The parameter "conversions" is not fully defined, but it is expected that it will be useful, so we cannot drop it and expect people to be satisfied.
The parameter "padding" changes the interpretation of the last byte of the data, and so cannot be deleted.
An option is to prepend an IA5 body part that contains the parameter text; this will aid unmodified readers, and can probably be made
Alvestrand & Thompson [Page 13]
RFC 1494 X.400/MIME Body Equivalences August 1993
reversible with suitable chicanery, but is it worth it????
Also, use of BilaterallyDefined Body Parts is specifically deprecated in both 1988 and 1992 X.400. It is retained solely for backward compatibility with 1984 systems. 1992 X.400 defines a File Transfer Body Part to solve this problem (i.e. binary file transfer through email). The standard and its regional profiles are not solid enough yet to exploit as a solution for this problem.
The body of the MIME content-type is the Data part of the ODA body part.
When mapping from MIME to X.400, the following steps are done:
The Parameters.document-application-profile and Parameters.document- architecture-class are set from the tables above. If any of the parameters are missing, the values for Q112 and formatted-processable are used.
It is an option for the gateway implementor to try to access them from inside the document, where they are defined as
Gateways are NOT required to do this, since the document- characteristics are optional parameters. If a gateway does not, it simply uses the defaulting rules defined above.
The OBJECT IDENTIFIERs for the document application profile and for ODA {2 8 0 0} must be added to the Encoded Information Types parameter of the message envelope.
[1] Alvestrand, H., Kille, S., Miles, R., Rose, M., and S. Thompson, "Mapping between X.400 and RFC-822 Message Bodies", RFC 1495, SINTEF DELAB, ISODE Consortium, Soft*Switch, Inc, Dover Beach Consulting, Inc., Soft*Switch, Inc., August 1993.
[3] Borenstein, N, and N. Freed, "MIME: Mechanisms for Specifying and Describing the Format of Internet Message Bodies", RFC 1341, Bellcore, Innosoft, June 1992.
[4] ISO 8613; Information Processing: Text and Office System; Office Document Architecture (ODA) and Interchange Format (ODIF), Part 1-8, 1989.
[5] ISO/IEC International Standard 10021, Information technology - Text Communication - Message-Oriented Text Interchange Systems (MOTIS) (Parts 1 to 8).
[6] CCITT Recommendation T.411 (1988), Open Document Architecture (ODA) and Interchange Format, Introduction and General Principles.
[7] Crocker, D., "Standard for the Format of ARPA Internet Text Messages", STD 11, RFC 822, UDEL, August 1982.
[8] Hardcastle-Kille, S., "Mapping between X.400(1988) / ISO 10021 and RFC-822", RFC 1327, University College London, May 1992.
[9] CCITT Recommendation T.4, Standardization of Group 3 Facsimile Apparatus for Document Transmission (1988).
[10] CCITT Recommendation T.30, Procedures For Document Facsimile Transmission in the General Switched Telephone Network (1988).
[11] CCITT, Data Communication Networks - Message Handling Systems - Recommendations X.400 - X.420 (1988 version).
[12] Alvestrand, H., "X.400 Use of Extended Character Sets", RFC 1502, SINTEF DELAB, August 1993.