tech-invite   World Map
3GPP     Specs     Glossaries     UICC       T+       IETF     RFCs     Groups     SIP     ABNFs       Search     Home

RFC 1148

 
 
 

Mapping between X.400(1988) / ISO 10021 and RFC 822

Part 3 of 3, p. 60 to 94
Prev RFC Part

 


prevText      Top      Up      ToC       Page 60 
5.3.  X.400 -> RFC 822

5.3.1.  Basic Approach

   A single RFC 822 message is generated from the incoming IP Message,
   Report, or IP Notification.   All IPMS.BodyParts are mapped onto a
   single RFC 822 body.  Other services are mapped onto RFC 822 header
   fields.  Where there is no appropriate existing field, new fields are
   defined for IPMS, MTS and MTA services.

   The gateway mechanisms will correspond to MTS Delivery.  As with
   submission, there are aspects where the MTA (transfer) services are
   also used. In particular, there is an optimisation to allow for
   multiple 822-MTS recipients.

5.3.2.  RFC 822 Settings

   An RFC 822 Service requires to have a number of mandatory fields in
   the RFC 822 Header.  Some 822-MTS services mandate specification of
   an 822-MTS Originator.  Even in cases where this is optional, it is
   usually desirable to specify a value.  The following defaults are
   defined, which should be used if the mappings specified do not derive
   a value:

   822-MTS Originator
        If this is not generated by the mapping (e.g., for a
        Delivery Report), a value pointing at a gateway
        administrator should be assigned.

   Date:
        A value will always be generated

   From:If this is not generated by the mapping, it should be
        assigned equal to the 822-MTS Originator.  If this is
        gateway generated, an appropriate 822.phrase should be
        added.

   At least one recipient field
        If no recipient fields are generated, a field "To: list:;",
        should be added.

   This will ensure minimal RFC 822 compliance.  When generating RFC
   822 headers, folding should be used in an appropriate manner.

Top      Up      ToC       Page 61 
5.3.3.  Basic Mappings

5.3.3.1.  Encoded Information Types

   This mapping from MTS.EncodedInformationTypes is needed in
   several disconnected places.  EBNF is defined as follows:

                encoded-info    = 1#encoded-type

                encoded-type    = built-in-eit / object-identifier

                built-in-eit    = "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)

   MTS.EncodedInformationTypes is mapped onto EBNF.encoded-info.
   MTS.EncodedInformationTypes.non-basic-parameters is ignored.  Built
   in types are mapped onto fixed strings (compatible with X.400(1984)
   and RFC 987), and other types are mapped onto EBNF.object-identifier.

5.3.3.2.  Global Domain Identifier

   The following simple EBNF is used to represent
   MTS.GlobalDomainIdentifier:

                global-id = std-or-address

   This is encoded using the std-or-address syntax, for the attributes
   within the Global Domain Identifier.

5.3.4.  Mappings from the IP Message

   Consider that an IPM has to be mapped to RFC 822.  The IPMS.IPM
   comprises an IPMS.IPM.heading and IPMS.IPM.body.   The heading is
   considered first.  Some EBNF for new fields is defined:

                ipms-field = "Obsoletes" ":" 1#msg-id
                           / "Expiry-Date" ":" date-time
                           / "Reply-By" ":" date-time
                           / "Importance" ":" importance
                           / "Sensitivity" ":" sensitivity

Top      Up      ToC       Page 62 
                           / "Autoforwarded" ":" boolean
                           / "Incomplete-Copy" ":"
                           / "Language" ":" language
                           / "Message-Type" ":" message-type
                           / "Discarded-X400-IPMS-Extensions" ":" 1#oid



                importance      = "low" / "normal" / "high"


                sensitivity     = "Personal" / "Private" /
                                       "Company-Confidential"

                language        = 2*ALPHA [ language-description ]
                language-description = printable-string


                message-type    = "Delivery Report"
                                / "InterPersonal Notification"
                                / "Multiple Part"

   The mappings and actions for the IPMS.Heading is now specified for
   each element.  Addresses, and Message Identifiers are mapped
   according to Chapter 4.  Other mappings are explained, or are
   straightforward (algorithmic).

   IPMS.Heading.this-IPM
        Mapped to "Message-ID:".

   IPMS.Heading.originator
        If IPMS.Heading.authorizing-users is present this is mapped
        to Sender:, if not to "From:".

   IPMS.Heading.authorizing-users
        Mapped to "From:".

   IPMS.Heading.primary-recipients
        Mapped to "To:".

   IPMS.Heading.copy-recipients
        Mapped to "Cc:".

   IPMS.Heading.blind-copy-recipients
        Mapped to "Bcc:".

   IPMS.Heading.replied-to-ipm
        Mapped to "In-Reply-To:".

Top      Up      ToC       Page 63 
   IPMS.Heading.obsoleted-IPMs
        Mapped to the extended RFC 822 field "Obsoletes:"

   IPMS.Heading.related-IPMs
        Mapped to "References:".

   IPMS.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.

   IPMS.Heading.expiry-time
        Mapped to the extended RFC 822 field "Expiry-Date:".

   IPMS.Heading.reply-time
        Mapped to the extended RFC 822 field "Reply-By:".

   IPMS.Heading.reply-recipients
        Mapped to "Reply-To:".

   IPMS.Heading.importance
        Mapped to the extended RFC 822 field "Importance:".

   IPMS.Heading.sensitivity
        Mapped to the extended RFC 822 field "Sensitivity:".

   IPMS.Heading.autoforwarded
        Mapped to the extended RFC 822 field "Autoforwarded:".

   The standard extensions (Annex H of X.420 / ISO 10021-7) are mapped
   as follows:

   incomplete-copy
        Mapped to the extended RFC 822 field "Incomplete-Copy:".

   language
        Mapped to the extended RFC 822 field "Language:", filling in
        the two letter code. If possible, the language-description
        should be filled in with a human readable description of the
        language.

   If the RFC 822 extended header is found, this should be mapped onto
   an RFC 822 header, as described in Section 5.1.2.

   If a non-standard extension is found, it should be discarded, unless
   the gateway understands the extension and can perform an appropriate
   mapping onto an RFC 822 header field.  If extensions are discarded,

Top      Up      ToC       Page 64 
   the list should be indicated in the extended RFC 822 field
   "Discarded-X400-IPMS-Extensions:".

   The IPMS.Body is mapped into the RFC 822 message body.  Each
   IPMS.BodyPart is converted to ASCII as follows:

   IPMS.IA5Text
        The mapping is straightforward (see Chapter 3).

   IPMS.MessageBodyPart
        The X.400 -> RFC 822 mapping  should be recursively applied,
        to generate an RFC 822 Message.  If present, the
        IPMS.MessageBodyPart.parameters.delivery-envelope should be
        used for the MTS Abstract Service Mappings.  If present, the
        IPMS.MessageBodyPart.parameters.delivery-time should be
        mapped to the extended RFC 822 field "Delivery-Date:".

   Other
        If other body parts can be mapped to IA5, either by use of
        mappings defined in X.408 [CCITT88a], or by other reasonable
        mappings, this should be done unless content conversion is
        prohibited.

   If some or all of the body parts cannot be converted there are three
   options.  All of these conform to this standard.  A different choice
   may be made for the case where no body part can be converted:

   1.   The first option is to reject the message, and send a non-
        delivery notification.  This must always be done if
        conversion is prohibited.

   2.   The second option is to map a missing body part to something
        of the style:

                *********************************

                There was a foobar here

                The widget gateway ate it

                *********************************

        This will allow some useful information to be transferred.
        As the recipient is a human (IPMS), then suitable action
        should be available.

   3.   Finally both can be done.  In this case, the supplementary
        information in the (positive) Delivery Report should make

Top      Up      ToC       Page 65 
        clear that something was sent on to the recipient with
        substantial loss of information.

   Where there is more than one IPMS.BodyPart, the mapping defined by
   Rose and Stefferud in [Rose85a], should be used to map the separate
   IPMS.BodyParts in the single RFC 822 message body.  If this is done,
   a "Message-Type:" field with value "Multiple part" should be added,
   which will indicate to a receiving gateway that the message may be
   unfolded according to RFC 934.

   For backwards compatibility with RFC 987, the following procedures
   should also be followed.  If there are two IA5 body parts, and the
   first starts with the string "RFC-822-Headers:" as the first line,
   then the remainder of this body part should be appended to the RFC
   822 header.

5.3.5.  Mappings from an IP Notification

   A message is generated, with the following fields:

   From:
        Set to the MTS.MessageDeliveryEnvelope.other-
        fields.originator-name.

   To:  Set to the IPMS.IPN.ipm-originator.

   Subject:
        Set to something of the form "X.400 Inter-Personal Receipt
        Notification".

   Message-Type:
        Set to "InterPersonal Notification"

   References:
        Set to IPMS.IPN.subject-ipm

   The following EBNF is defined for the body of the Message.  This
   format is defined to ensure that all information from an
   interpersonal notification is available to the end user in a uniform
   manner.

           ipn-body-format = ipn-description <CRLF>
                           [ ipn-extra-information <CRLF> ]
                           ipn-content-return

           ipn-description = ipn-receipt / ipn-non-receipt

           ipn-receipt = "Your message to:" preferred-recipient <CRLF>

Top      Up      ToC       Page 66 
                    "was received at" receipt-time <CRLF> <CRLF>
                    "This notification was generated"
                    acknowledgement-mode <CRLF>
                    "The following extra information was given:" <CRLF>
                    ipn-suppl <CRLF>

           ipn-non-receipt "Your message to:"
                   preferred-recipient <CRLF>
                   ipn-reason


           ipn-reason = ipn-discarded / ipn-auto-forwarded

           ipn-discarded = "was discarded for the following reason:"
                           discard-reason <CRLF>

           ipn-auto-forwarded = "was automatically forwarded." <CRLF>
                           [ "The following comment was made:"
                                   auto-comment ]


           ipn-extra-information =
                    "The following information types were converted:"
                    encoded-info

           ipn-content-return = "The Original Message is not available"
                           / "The Original Message follows:"
                             <CRLF> <CRLF> message


           preferred-recipient = mailbox
           receipt-time        = date-time
           auto-comment        = printablestring
           ipn-suppl           = printablestring

           non-receipt-reason = "Discarded" / "Auto-Forwarded"

           discard-reason     = "Expired" / "Obsoleted" /
                                   "User Subscription Terminated"

           acknowledgement-mode = "Manually" / "Automatically"

   The mappings for elements of the common fields of IPMS.IPN
   (IPMS.CommonFields) onto this structure and the message header are:

        subject-ipm
             Mapped to "References:"

Top      Up      ToC       Page 67 
        ipm-originator
             Mapped  to "To:".

        ipm-preferred-recipient
             Mapped to EBNF.preferred-recipient

        conversion-eits
             Mapped to EBNF.encoded-info in EBNF.ipn-extra-information

        The mappings for elements of IPMS.IPN.non-receipt-fields
        (IPMS.NonReceiptFields) are:

        non-receipt-reason
             Used to select between EBNF.ipn-discarded and
             EBNF.ipn-auto-forwarded

        discard-reason
             Mapped to EBNF.discard-reason

        auto-forward-comment
             Mapped to EBNF.auto-comment

        returned-ipm
             If present, the second option of EBNF.ipn-content-return
             should be chosen, and an RFC 822 mapping of the message
             included.  Otherwise the first option should be chosen.

        The mappings for elements of IPMS.IPN.receipt-fields
        (IPMS.ReceiptFields) are:

        receipt-time
             Mapped to EBNF.receipt-time

        acknowledgement-mode
             Mapped to EBNF.acknowledgement-mode

        suppl-receipt-info
             Mapped to EBNF.ipn-suppl

   An example notification is:

      From: Steve Kille <steve@cs.ucl.ac.uk>
      To: Julian Onions <jpo@computer-science.nottingham.ac.uk>
      Subject: X400 Inter-personal Receipt Notification
      Message-Type: InterPersonal Notification
      References: <1229.614418325@UK.AC.NOTT.CS>
      Date: Wed, 21 Jun 89 08:45:25 +0100

Top      Up      ToC       Page 68 
      Your message to: Steve Kille <steve@cs.ucl.ac.uk>
      was automatically forwarded.
      The following comment was made:
      Sent on to a random destination

      The following information types were converted: g3fax

      The Original Message is not available

5.3.6.  Mappings from the MTS Abstract Service

   This section describes the MTS mappings for User Messages (IPM and
   IPN).  This mapping is defined by specifying the mapping of
   MTS.MessageDeliveryEnvelope.  The following extensions to RFC 822 are
   defined to support this mapping:

      mts-field = "X400-MTS-Identifier" ":" mts-msg-id
                / "X400-Originator" ":" mailbox
                / "X400-Recipients" ":" 1#mailbox
                / "Original-Encoded-Information-Types" ":"
                                encoded-info
                / "X400-Content-Type" ":" mts-content-type
                / "Content-Identifier" ":" printablestring
                / "Priority" ":" priority
                / "Originator-Return-Address" ":" 1#mailbox
                / "DL-Expansion-History" ":" mailbox ";" date-time ";"
                / "Redirection-History" ":" redirection
                / "Conversion" ":" prohibition
                / "Conversion-With-Loss" ":" prohibition
                / "Requested-Delivery-Method" ":"
                                1*( labelled-integer )
                / "Delivery-Date" ":" date-time
                / "Discarded-X400-MTS-Extensions" ":"
                                1#( oid / labelled-integer )


      prohibition     = "Prohibited" / "Allowed"

      mts-msg-id       = "[" global-id ";" *text "]"

      mts-content-type = "P2" /  labelled-integer
                      / object-identifer

      priority        = "normal" / "non-urgent" / "urgent"

      redirection     = mailbox ";" "reason" "="
                              redirection-reason
                              ";" date-time

Top      Up      ToC       Page 69 
      redirection-reason =
                      "Recipient Assigned Alternate Recipient"
                    / "Originator Requested Alternate Recipient"
                    / "Recipient MD Assigned Alternate Recipient"

     The mappings for each element of MTS.MessageDeliveryEnvelope can
     now be considered.

     MTS.MessageDeliveryEnvelope.message-delivery-identifier
          Mapped to the extended RFC 822 field "X400-MTS-Identifier:".

     MTS.MessageDeliveryEnvelope.message-delivery-time
          Discarded, as this time will be represented in an
          appropriate trace element.

     The mappings for elements of
     MTS.MessageDeliveryEnvelope.other-fields
     (MTS.OtherMessageDeliveryFields) are:

     content-type
          Mapped to the extended RFC 822 field "X400-Content-Type:".
          The string "P2" is for backwards compatibility with RFC 987.
          If the content type is 22, then a labelled-integer encoding
          should be used.

     originator-name
          Mapped to the 822-MTS originator, and to the extended RFC
          822 field "X400-Originator:".  This is described in
          Section 4.6.2.

     original-encoded-information-types
          Mapped to the extended RFC 822 field
          "Original-Encoded-Information-Types:".

     priority
          Mapped to the extended RFC 822 field "Priority:".

     delivery-flags
          If the conversion-prohibited bit is set, add an extended RFC
          822 field "Conversion:".

     this-recipient-name and other-recipient-names
          These fields are used together, to generate the extended RFC
          822 field "X400-Recipients:".  Note that the latter will
          only be present if disclosure of recipients is allowed.

     originally-intended-recipient-name
          Mapped to a comment associated with the recipient in

Top      Up      ToC       Page 70 
          question, as described in Section 4.6.2.2.

    converted-encoded-information-types
          Discarded, as it will always be IA5 only.

    message-submission-time
          Mapped to Date:.

    content-identifier
          Mapped to the extended RFC 822 field "Content-Identifier:".

    If any extensions
    (MTS.MessageDeliveryEnvelope.other-fields.extensions) are
    present, and they are marked as critical for transfer or
    delivery, then the message should be rejected.  The extensions
    (MTS.MessageDeliveryEnvelope.other-fields.extensions) are mapped
    as follows.

    conversion-with-loss-prohibited
          If set to
          MTS.ConversionWithLossProhibited.conversion-with-loss-prohibited,
          then add the extended RFC 822 field "Conversion-With-Loss:".

    requested-delivery-method
          Mapped to the extended RFC 822 field
          "Requested-Delivery-Method:".

    originator-return-address
          Mapped to the extended RFC 822 field
          "Originator-Return-Address:".

    physical-forwarding-address-request
    physical-delivery-modes
    registered-mail-type
    recipient-number-for-advice
    physical-rendition-attributes
    physical-delivery-report-request
    physical-forwarding-prohibited

      These elements are only appropriate for physical delivery.  They
      are represented as comments in the "X400-Recipients:" field, as
      described in Section 4.6.2.2.

    originator-certificate
    message-token
    content-confidentiality-algorithm-identifier
    content-integrity-check
    message-origin-authentication-check

Top      Up      ToC       Page 71 
    message-security-label
    proof-of-delivery-request

      These elements imply use of security services not available in the
      RFC 822 environment.  If they are marked as critical for transfer
      or delivery, then the message should be rejected.  Otherwise they
      should be discarded.

    redirection-history
        Each element is mapped to an extended RFC 822 field
        "Redirection-History:".  They should be ordered in the
        message header, so that the most recent redirection comes
        first (same order as trace).

    dl-expansion-history
        Each element is mapped to the extended RFC 822 field
        "DL-Expansion-History:".  They should be ordered in the
        message header, so that the most recent expansion comes
        first (same order as trace).

   If any MTS (or MTA) Extensions not specified in X.400 are present,
   and they are marked as critical for transfer or delivery, then the
   message should be rejected.  If they are not so marked, they can
   safely be discarded.  The list of discarded fields should be
   indicated in the extended header "Discarded-X400-MTS-Extensions:".

5.3.7.  Mappings from the MTA Abstract Service

   There are some mappings at the MTA Abstract Service level which are
   done for IPM and IPN.  These can be derived from
   MTA.MessageTransferEnvelope.  The reasons for the mappings at this
   level, and the violation of layering are:

   -    Allowing for multiple recipients to share a single RFC 822
        message.

   -    Making the X.400 trace information available on the RFC 822
        side.

   -    Making any information on deferred delivery available.

   The 822-MTS recipients should be calculated from the full list of
   X.400 recipients.  This is all of the members of
   MTA.MessageTransferEnvelope.per-recipient-fields being passed
   through the gateway, where the responsibility bit is set.  In
   some cases, a different RFC 822 message would be calculated for
   each recipient.  If this is due to differing service requests for
   each recipient, then a different message should be generated.

Top      Up      ToC       Page 72 
   If it is due only to the request for non-disclosure of
   recipients, then the "X400-Recipients:" field should be omitted,
   and only one message sent.

   The following EBNF is defined for extended RFC 822 headers:

      mta-field       = "X400-Received" ":" x400-trace
                      / "Deferred-Delivery" ":" date-time
                      / "Latest-Delivery-Time" ":" date-time


      x400-trace       = "by" md-and-mta ";"
                       [ "deferred until" date-time ";" ]
                       [ "converted" "(" encoded-info ")" ";" ]
                       [ "attempted" md-and-mta ";"  ]
                          action-list
                          ";" arrival-time


      md-and-mta       = [ "mta" mta "in" ]  global-id
      mta              = word
      arrival-time     = date-time


      action-list      = 1#action
      action           = "Redirected"
                       / "Expanded"
                       / "Relayed"
                       / "Rerouted"

   If MTA.PerMessageTransferFields.deferred-delivery-time is present,
   use it to generate a Deferred-Delivery: field.  For some reason,
   X.400 does not make this information available at the MTS level on
   delivery.  X.400 profiles, and in particular the CEN/CENELEC profile
   for X.400(1984) [Systems85a], specify that this element must be
   supported at the first MTA.  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, it is expected that the value of this element will often be in
   the past.  For this reason, the extended RFC 822 field is primarily
   for information.

   Merge MTA.PerMessageTransferFields.trace-information, and
   MTA.PerMessageTransferFields.internal-trace-information to produce a
   single ordered trace list.  If Internal trace from other management
   domains has not been stripped, this may require complex interleaving.
   Use this to generate a sequence of "X400-Received:" fields.  The only
   difference between external trace and internal trace will be the

Top      Up      ToC       Page 73 
   extra MTA information in internal trace elements.

   When generating an RFC 822 message all trace fields (X400- Received
   and Received) should be at the beginning of the header, before any
   other fields.  Trace should be in chronological order, with the most
   recent element at the front of the message.  A simple example trace
   (external) is:

   X400-Received: by /PRMD=UK.AC/ADMD=Gold 400/C=GB/ ; Relayed ;
           Tue, 20 Jun 89 19:25:11 +0100

   A more complex example (internal):

   X400-Received: by mta UK.AC.UCL.CS in
                                      /PRMD=UK.AC/ADMD=Gold 400/C=GB/ ;
           deferred until  Tue, 20 Jun 89 14:24:22 +0100 ;
           converted (undefined, g3fax) ";" attempted /ADMD=Foo/C=GB/ ;
           Relayed, Expanded, Redirected ; Tue, 20 Jun 89 19:25:11 +0100

5.3.8.  Mappings from Report Delivery

   Delivery reports are mapped at the MTS service level.  This means
   that only reports destined for the MTS user will be mapped.  Some
   additional services are also taken from the MTA service.

5.3.8.1.  MTS Mappings

   A Delivery Report service will be represented as
   MTS.ReportDeliveryEnvelope, which comprises of per-report-fields
   (MTS.PerReportDeliveryFields) and per-recipient-fields.

   A message should be generated with the following fields:

   From:
        An administrator at the gateway system.  This is also the
        822-MTS originator.

   To:  A mapping of the
        MTA.ReportTransferEnvelope.report-destination-name.  This is
        also the 822-MTS recipient.

   Message-Type:
        Set to "Delivery Report".

   Subject:
        Something of the form "X.400 Delivery Report".

   The format of the body of the message is defined to ensure that all

Top      Up      ToC       Page 74 
   information is conveyed to the RFC 822 user in a consistent manner.
   This gives a summary of critical information, and then a full listing
   of all parameters:


   dr-body-format = dr-summary <CRLF>
                    dr-recipients <CRLF>
                    dr-extra-information <CRLF>
                    dr-content-return


   dr-content-return = "The Original Message is not available"
                   / "The Original Message follows:"
                     <CRLF> <CRLF> message

   dr-summary = "This report relates to your message:" <CRLF>
                content-correlator <CRLF> <CRLF>
                "of" date-time <CRLF> <CRLF>
                "It was generated by:" report-point <CRLF>
                "at" date-time <CRLF> <CRLF>
                "It was later converted to RFC 822 by:" mailbox <CRLF>
                "at" date-time <CRLF> <CRLF>


   dr-recipients = *(dr-recipient <CRLF> <CRLF>)

   dr-recipient = dr-recip-success / dr-recip-failure

   dr-recip-success =
                   "Your message was successfully delivered to:"
                   mailbox "at" date-time

   dr-recip-failure = "Your message was not delivered to:"
                   mailbox <CRLF>
                   "for the following reason:" *word


   dr-extra-information =
    "-----------------------------------------------" <CRLF> <CRLF>
    "The following information is derived from the Report" <CRLF>
    "It may be useful for problem diagnosis:" <CRLF> <CRLF>
    drc-field-list

   drc-field-list       = *(drc-field <CRLF>)

   drc-field = "Subject-Submission-Identifier" ":"
                           mts-msg-id
             / "Content-Identifier" ":" printablestring

Top      Up      ToC       Page 75 
             / "Content-Type" ":" mts-content-type
             / "Original-Encoded-Information-Types" ":"
                           encoded-info
             / "Originator-and-DL-Expansion-History" ":"
                           dl-history
             / "Reporting-DL-Name" ":" mailbox
             / "Content-Correlator" ":" content-correlator
             / "Recipient-Info" ":" recipient-info
             / "Subject-Intermediate-Trace-Information" ":"
                           x400-trace


   recipient-info  = mailbox "," std-or ";"
                   report-type
                   [ "converted eits" encoded-info ";" ]
                   [ "originally intended recipient"
                            mailbox "," std-or ";" ]
                   [ "last trace" [ encoded-info ] date-time ";" ]
                   [ "supplementary info" <"> printablestring <"> ";" ]
                   [ "redirection history" 1#redirection ";"
                   [ "physical forwarding address"
                                         printablestring ";" ]


   report-type     = "SUCCESS" drc-success
                   / "FAILURE" drc-failure

   drc-success     = "delivered at" date-time ";"
                   [ "type of MTS user" labelled-integer ";" ]

   drc-failure     = "reason" labelled-integer ";"
                   [ "diagnostic" labelled-integer ";" ]

   report-point = [ "mta" word "in" ] global-id
   content-correlator = *word
   dl-history = 1#( mailbox "(" date-time ")")

   The format is defined as a fixed definition.  The only exception is
   that the EBNF.drc-fields should follow RFC 822 folding rules.

   The elements of MTS.ReportDeliveryEnvelope.per-report-fields are
   mapped as follows onto extended RFC 822 fields:

   subject-submission-identifier
        Mapped to EBNF.drc-field (Subject-Submission-Identifier)

   content-identifier
        Mapped to EBNF.drc-field (Content-Identifier)

Top      Up      ToC       Page 76 
   content-type
        Mapped to EBNF.drc-field (Content-Type)

   original-encoded-information-types
        Mapped to EBNF.drc-field (Encoded-Info)

   The extensions from
   MTS.ReportDeliveryEnvelope.per-report-fields.extensions are
   mapped as follows:

   originator-and-DL-expansion-history
        Mapped to EBNF.drc-field (Originator-and-DL-Expansion-
        History)

   reporting-DL-name
        Mapped to EBNF.drc-field (Reporting-DL-Name)

   content-correlator
        Mapped to EBNF.content-correlator, provided that the
        encoding is IA5String (this should always be the case).
        This is used in EBNF.dr-summary and EBNF.drc-field-list.
        In the former, LWSP may be added, in order to improve the
        layout of the message.

   message-security-label
   reporting-MTA-certificate
   report-origin-authentication-check

      These security parameters should not be present.  If they are,
      they should be discarded in preference to discarding the whole
      report.

   For each element of MTS.ReportDeliveryEnvelope.per-recipient-fields,
   a value of EBNF.dr-recipient, and an EBNF.drc-field (Recipient-Info)
   should be generated.  The components are mapped as follows.

   actual-recipient-name
        Used to generate the first EBNF.mailbox and EBNF.std-or in
        EBNF.recipient-info.  Both RFC 822 and X.400 forms are
        given, as there may be a problem in the mapping tables.  It
        also generates the EBNF.mailbox in EBNF.dr-recip-success or
        EBNF.dr-recip-failure.

   report
        If it is MTS.Report.delivery, then set EBNF.dr-recipient to
        EBNF.dr-recip-success, and similarly set EBNF.report-type,
        filling in EBNF.drc-success.  If it is a failure, set
        EBNF.dr-recipient to EBNF.dr-recip-failure, making a human

Top      Up      ToC       Page 77 
        interpretation of the reason and diagnostic codes, and
        including any supplementary information.  EBNF.drc-failure
        should be filled in systematically.

   converted-encoded-information-types
        Set EBNF.drc-field ("converted eits")

   originally-intended-recipient
        Set the second ("originally intended recipient") mailbox

        and

        std-or in EBNF.drc-field.

   supplementary-info
        Set EBNF.drc-field ("supplementary info"), and include this
        information in EBNF.dr-recip-failure.

   redirection-history
        Set EBNF.drc-field ("redirection history")

   physical-forwarding-address
        Set ENBF.drc-field ("physical forwarding address")

   recipient-certificate
        Discard

   proof-of-delivery
        Discard

   Any unknown extensions should be discarded, irrespective of
   criticality.

   The original message should be included in the delivery port.  The
   original message will usually be available at the gateway, as
   discussed in Section 5.2.

5.3.8.2.  MTA Mappings

   The single 822-MTS recipient is constructed from
   MTA.ReportTransferEnvelope.report-destination-name, using the
   mappings of Chapter 4.  Unlike with a user message, this information
   is not available at the MTS level.

   The following additional mappings should be made:

   MTA.ReportTransferEnvelope.report-destination-name
        This should be used to generate the To: field.

Top      Up      ToC       Page 78 
   MTA.ReportTransferEnvelope.identifier
        Mapped to the extended RFC 822 field "X400-MTS-Identifier:".
        It may also be used to derive a "Message-Id:" field.

   MTA.ReportTransferEnvelope.trace-information
        and

   MTA.ReportTransferEnvelope.internal-trace-information
        Mapped onto the extended RFC 822 field "X400-Received:", as
        described in Section 5.3.7.  The first element should also
        be used to generate the "Date:" field, and the
        EBNF.failure-point.

      MTA.PerRecipientReportTransferFields.last-trace-information
      Mapped to EBNF.recipient-info (last trace)
      MTA.PerReportTransferFields.subject-intermediate-trace-information
      Mapped to EBNF.drc-field (subject-Intermediate-Trace-Information).
      These fields should be ordered so that the most recent trace element
      comes first.

5.3.8.3.  Example Delivery Report

   This is an example, of a moderately complex report.

   From: The Postmaster <postmaster@cs.ucl.ac.uk>
   To: jpo@computer-science.nottingham.ac.uk
   Subject: X.400 Delivery Report
   Message-Type: Delivery Report
   Date: Wed, 21 Jun 89 08:45:25 +0100
   X400-MTS-Identifier: /PRMD=UK.AC/ADMD=Gold 400/C=GB/;13412345235

   This report relates to your message:
     Date: Wed, 21 Jun 89 06:15:43 +0000
     Message-ID:  <8907140715.aa09015@CS.Nott.AC.UK>
     Subject: Now it's the fine tuning .... !
     To: Piete Brooks (Postmaster) <pb@computer-lab.cambridge.ac.uk>

   of Wed, 21 Jun 89 06:15:43 +0000

   It was generated by mta PK in /PRMD=UK/ADMD=DBP/C=DE/
   at Wed, 21 Jun 89 08:45:25 +0100

   It was later converted to RFC 822 by: Mail-Gateway@oxbridge.ac.uk
   at Wed, 21 Jun 89 08:45:26 +0100

   Your message was not delivered to: bad-user@nowhere
   for the following reason: Rendition problem with punctuation
           (Umlaut failure)

Top      Up      ToC       Page 79 
   -----------------------------------------------

   The following information is derived from the Report
   It may be useful for problem diagnosis:

   Subject-Submission-Identifier:
                          [/PRMD=UK.AC/ADMD=Gold 400/C=GB/;148996]
   Content-Identifier:  X.400 Delivery Report
   Content-Type: P2-1988 (22)
   Original-Encoded-Information-Types: ia5
   Content-Correlator: Date: Wed, 21 Jun 89 06:15:43 +0000
       Message-ID:  <8907140715.aa09015@CS.Nott.AC.UK>
       Subject: Now it's the fine tuning .... !
       To: Piete Brooks (Postmaster) <pb@computer-lab.cambridge.ac.uk>
   Recipient-Info:
       bad-user@nowhere, /S=bad-user/PRMD=nowhere/ADMD=DBP/C=DE/ ;
       FAILURE reason Physical-Rendition-Not-Performed (3) ;
       diagnostic Punctuation-Symbol-Loss (23) ;
       supplementary info Umlaut failure

   The Original Message follows:

   Subject: Now it's the fine tuning .... !
   Date: Wed, 21 Jun 89 06:15:43 +0000
   From: Julian Onions <jpo@computer-science.nottingham.ac.uk>
   To: Piete Brooks (Postmaster) <pb@computer-lab.cambridge.ac.uk>
   Cc: bad-user@nowhere
   Message-ID:  <8907140715.aa09015@CS.Nott.AC.UK>

   A short test

5.3.9.  Probe

   This is an MTS internal issue.  Any probe 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 an MTS
   Message with the values specified in the probe.  The reply should
   make use of MTS.SupplementaryInformation to indicate that the probe
   was serviced by the gateway.

Appendix A - Differences with RFC 987

   This appendix summarises changes between this document and RFC
   987/RFC 1026.

1.  Introduction

   The model has shifted from a protocol based mapping to a service

Top      Up      ToC       Page 80 
   based mapping.  This has increased the generality of the
   specification, and improved the model.  This change affects the
   entire document.

   A restriction on scope has been added.

2.  Service Elements

      -    The new service elements of X.400 are dealt with.

      -    A clear distinction is made between origination and
           reception.

3.  Basic Mappings

      -    Add teletex support.

      -    Add object identifier support.

      -    Add labelled integer support.

      -    Make PrintableString <-> ASCII mapping reversible.

      -    The printable string mapping is aligned to the NBS mapping
           derived from RFC 987.

4.  Addressing

      -    Support for new addressing attributes.

      -    The message ID mapping is changed to not be table driven.

5.  Detailed Mappings

      -    Define extended IPM Header, and use instead of second body
           part for RFC 822 extensions.

      -    Realignment of element names.

      -    New syntax for reports, simplifying the header and
           introducing a mandatory body format (the RFC 987 header
           format was unusable).

      -    Drop complex autoforwarded mapping.

      -    Add full mapping for IP Notifications, defining a body
           format.

Top      Up      ToC       Page 81 
      -    Adopt an MTS Identifier syntax in line with the O/R Address
           syntax.

      -    A new format for X400 Trace representation on the RFC 822
           side.

6.  Appendices

      -    Move Appendix on restricted 822 mappings to a separate RFC.

      -    Delete Phonenet and SMTP Appendixes.

Appendix B - Mappings specific to the JNT Mail

   This Appendix is specific to the JNT Mail Protocol.  It describes
   specific changes in the context of this protocol.

1.  Introduction

   There are five aspects of a gateway which are JNT Mail Specific.
   These are each given a section of this appendix.

2.  Domain Ordering

   When interpreting and generating domains, the UK NRS domain ordering
   must be used.

3.  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.

   If an Acknowledge-To: field is present when going from JNT Mail to
   X.400, MTS.PerRecipientSubmissionFields.originator-request-
   report.report shall be set for each recipient.  If there is more that
   one address in the Acknowledge-To: field, or if the one address is
   not equivalent to the 822-MTS return address, then:

      1.   Acknowledgement(s) should be generated by the gateway.  The
           text of these acknowledgements should indicate that they are
           generated by the gateway.

      2.   The Acknowledge-To: field should also be passed as an
           extension heading.

   When going from X.400 to JNT Mail, in cases where
   MTA.PerRecipientMessageTransferFields.per-recipient-indicators.

Top      Up      ToC       Page 82 
   originator-report is set, the copy of the message to that recipient
   should have an Acknowledge-To: field containing the
   MTS.OtherMessageDeliveryFields.originator-name.  No special treatment
   should be given when MTA.PerRecipientMessageTransferFields.per-
   recipient-indicators.  originating-MTA-report is set.  No attempt
   should be made to map Receipt notification requests onto
   Acknowledge-To:, as no association can be guaranteed between IPMS and
   MTS level addressing information.

4.  Trace

   JNT Mail trace uses the Via: syntax.  When going from JNT Mail to
   X.400, a mapping similar to that for Received:  is used. No
   MTS.GlobalDomainIdentifier of the site making the trace can be
   derived from the Via:, so a value for the gateway should be used.
   The trace text, including the "Via:", should be unfolded, truncated
   to MTS.ub-mta-name-length (32), and mapped to
   MTA.InternalTraceInformationElement.mta-name.  There is no JNT Mail
   specific mapping for the reverse direction.

5.  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.

6.  Lack of 822-MTS originator specification

   In JNT Mail the default mapping of the
   MTS.OtherMessageDeliveryFields.originator-name is to the Sender:
   field.  This can cause a problem when going from X.400 to JNT Mail if
   the mapping of IPMS.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 IPMS.Heading.authorising-users component and
   IPMS.Heading.originator.formal-name is different from
   MTS.OtherMessageDeliveryFields.originator-name, map
   MTS.OtherMessageDeliveryFields.originator-name, onto the Sender:
   field.

   If an IPM has a IPMS.Heading.authorising-users component, and
   IPMS.Heading.originator.formal-name is different from
   MTS.OtherMessageDeliveryFields.originator-name,
   MTS.OtherMessageDeliveryFields.originator-name should be mapped onto
   the Sender: field, and IPMS.Heading.originator mapped onto the

Top      Up      ToC       Page 83 
   Original-Sender: field.

   In other cases the MTS.OtherMessageDeliveryFields.originator-name, is
   already correctly represented.

Appendix C - 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) and then gatewaying the
   resulting RFC 822 address into X.400.  For example, an X.400 address:

      Country         US
      Organisation    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-Internet gateway and gatehost.COM is an
   Internet-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 through a pair of
   gateways:

      Country         US
      ADMD            ATT
      PRMD            Internet
      Organisation    GateOrg
      RFC-822         inthop!dest!user@gatehost.COM

   or through a single X.400 to UUCP gateway:

      Country         US
      ADMD            ATT
      PRMD            UUCP
      Organisation    GateOrg
      RFC-822         inthop!dest!user

Appendix D - Object Identifier Assignment

   An object identifier is needed for the extension IPMS element.  The

Top      Up      ToC       Page 84 
   following value should be used.

      rfc-987-88 OBJECT IDENTIFIER ::=
          {ccitt data(9) pss(2342) ucl(234219200300) rfc-987-88(200)}

      id-rfc-822-field OBJECT IDENTIFIER ::= {rfc987-88 field(0)}

Appendix E - BNF Summary

   boolean = "TRUE" / "FALSE"


   numericstring = *DIGIT


   printablestring  = *( ps-char )
   ps-restricted-char      = 1DIGIT /  1ALPHA / " " / "'" / "+"
                      / "," / "-" / "." / "/" / ":" / "=" / "?"
   ps-delim         = "(" / ")"
   ps-char          = ps-delim / ps-restricted-char


   ps-encoded       = *( ps-restricted-char / ps-encoded-char )
   ps-encoded-char  = "(a)"               ; (@)
                     / "(p)"               ; (%)
                     / "(b)"               ; (!)
                     / "(q)"               ; (")
                     / "(u)"               ; (_)
                     / "(l)"               ; "("
                     / "(r)"               ; ")"
                     / "(" 3DIGIT ")"


   teletex-string   = *( ps-char / t61-encoded )
   t61-encoded      = "{" 1* t61-encoded-char "}"
   t61-encoded-char = 3DIGIT


   teletex-and-or-ps = [ printablestring ] [ "*" teletex-string ]


   labelled-integer ::= [ key-string ] "(" numericstring ")"

   key-string      = *key-char
   key-char        = <a-z, A-Z, 1-9, and "-">


   object-identifier ::= [ defined-value ] oid-comp-list

Top      Up      ToC       Page 85 
   oid-comp-list ::= oid-comp oid-comp-list
                   | oid-comp

   defined-value ::= key-string

   oid-comp ::= [ key-string ] "(" numericstring ")"


   encoded-info    = 1#encoded-type

   encoded-type    = built-in-eit / object-identifier

   built-in-eit    = "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)


   encoded-pn      = [ given "." ] *( initial "." ) surname

   given           = 2*<ps-char not including ".">

   initial         = ALPHA

   surname         = printablestring


   std-or-address  = 1*( "/" attribute "=" value ) "/"
   attribute       = standard-type
                   / "RFC-822"
                   / registered-dd-type
                   / dd-key "." std-printablestring
   standard-type   = key-string

   registered-dd-type
                   = key-string
   dd-key          = key-string

   value           = std-printablestring

   std-printablestring
                   = *( std-char / std-pair )

Top      Up      ToC       Page 86 
   std-char        = <"{", "}", "*", and any ps-char
                                 except "/" and "=">
   std-pair        = "$" ps-char


   dmn-or-address  = dmn-part *( "." dmn-part )
   dmn-part        = attribute "$" value
   attribute       = standard-type
                   / "~" dmn-printablestring
   value           = dmn-printablestring
                   / "@"
   dmn-printablestring =
                   = *( dmn-char / dmn-pair )
   dmn-char        = <"{", "}", "*", and any ps-char
                                         except ".">
   dmn-pair        = "."


   global-id = std-or-address


   mta-field       = "X400-Received" ":" x400-trace
                   / "Deferred-Delivery" ":" date-time
                   / "Latest-Delivery-Time" ":" date-time


   x400-trace       = "by" md-and-mta ";"
                    [ "deferred until" date-time ";" ]
                    [ "converted" "(" encoded-info ")" ";" ]
                    [ "attempted" md-and-mta ";"  ]
                       action-list
                       ";" arrival-time


   md-and-mta       = [ "mta" mta "in" ]  global-id
   mta              = word
   arrival-time     = date-time


   action-list      = 1#action
   action           = "Redirected"
                    / "Expanded"
                    / "Relayed"
                    / "Rerouted"


   dr-body-format = dr-summary <CRLF>
                    dr-recipients <CRLF>

Top      Up      ToC       Page 87 
                    dr-extra-information <CRLF>
                    dr-content-return


   dr-content-return = "The Original Message is not available"
                   / "The Original Message follows:"
                     <CRLF> <CRLF> message

   dr-summary = "This report relates to your message:" <CRLF>
                   content-correlator <CRLF> <CRLF>
                "of" date-time <CRLF> <CRLF>
                "It was generated by:" report-point <CRLF>
                "at" date-time <CRLF> <CRLF>
                "It was later converted to RFC 822 by:" mailbox <CRLF>
                "at" date-time <CRLF> <CRLF>


   dr-recipients = *(dr-recipient <CRLF> <CRLF>)

   dr-recipient = dr-recip-success / dr-recip-failure

   dr-recip-success =
                   "Your message was successfully delivered to:"
                   mailbox "at" date-time


   dr-recip-failure = "Your message was not delivered to:"
                           mailbox <CRLF>
                      "for the following reason:" *word


   dr-extra-information =
    "-----------------------------------------------" <CRLF> <CRLF>
    "The following information is derived from the Report" <CRLF>

    "It may be useful for problem diagnosis:" <CRLF> <CRLF>
   drc-field-list

   drc-field-list       = *(drc-field <CRLF>)

   drc-field = "Subject-Submission-Identifier" ":"
                                   mts-msg-id
             / "Content-Identifier" ":" printablestring
             / "Content-Type" ":" mts-content-type
             / "Original-Encoded-Information-Types" ":"
                           encoded-info
             / "Originator-and-DL-Expansion-History" ":"
                           dl-history

Top      Up      ToC       Page 88 
             / "Reporting-DL-Name" ":" mailbox
             / "Content-Correlator" ":" content-correlator
             / "Recipient-Info" ":" recipient-info


   recipient-info  = mailbox "," std-or ";"
                   report-type
                   [ "converted eits" encoded-info ";" ]
                   [ "originally intended recipient"
                           mailbox "," std-or ";" ]
                   [ "supplementary info" <"> printablestring <"> ";" ]
                   [ "redirection history" 1#redirection ";"
                   [ "physical forwarding address"
                                         printablestring ";" ]


   report-type     = "SUCCESS" drc-success
                   / "FAILURE" drc-failure

   drc-success     = "delivered at" date-time ";"
                   [ "type of MTS user" labelled-integer ";" ]

   drc-failure     = "reason" labelled-integer ";"
                   [ "diagnostic" labelled-integer ";" ]


   report-point = [ "mta" word "in" ] global-id
   content-correlator = *word
   dl-history = 1#( mailbox "(" date-time ")")


   mts-field = "X400-MTS-Identifier" ":" mts-msg-id
             / "X400-Originator" ":" mailbox
             / "X400-Recipients" ":" 1#mailbox
             / "Original-Encoded-Information-Types" ":"

                               encoded-info
             / "X400-Content-Type" ":" mts-content-type
             / "Content-Identifier" ":" printablestring
             / "Priority" ":" priority
             / "Originator-Return-Address" ":" 1#mailbox
             / "DL-Expansion-History" ":" mailbox ";" date-time ";"
             / "Redirection-History" ":" redirection
             / "Conversion" ":" prohibition
             / "Conversion-With-Loss" ":" prohibition
             / "Requested-Delivery-Method" ":"
                             1*( labelled-integer )
             / "Delivery-Date" ":" date-time

Top      Up      ToC       Page 89 
             / "Discarded-X400-MTS-Extensions" ":"
                             1#( oid / labelled-integer )


   prohibition     = "Prohibited" / "Allowed"

   mts-msg-id       = "[" global-id ";" *text "]"

   mts-content-type = "P2" /  labelled-integer
                   / object-identifer

   priority        = "normal" / "non-urgent" / "urgent"

   redirection     = mailbox ";" "reason" "="
                           redirection-reason
                           ";" date-time
   redirection-reason =
             "Recipient Assigned Alternate Recipient"
           / "Originator Requested Alternate Recipient"
           / "Recipient MD Assigned Alternate Recipient"


   ipn-body-format = ipn-description <CRLF>
                   [ ipn-extra-information <CRLF> ]
                   ipn-content-return

   ipn-description = ipn-receipt / ipn-non-receipt

   ipn-receipt = "Your message to:" preferred-recipient <CRLF>
            "was received at" receipt-time <CRLF> <CRLF>
            "This notification was generated"
            acknowledgement-mode <CRLF>
            "The following extra information was given:" <CRLF>
            ipn-suppl <CRLF>

   ipn-non-receipt "Your message to:"

            preferred-recipient <CRLF>
            ipn-reason


   ipn-reason = ipn-discarded / ipn-auto-forwarded

   ipn-discarded = "was discarded for the following reason:"
                   discard-reason <CRLF>

   ipn-auto-forwarded = "was automatically forwarded." <CRLF>
                   [ "The following comment was made:"

Top      Up      ToC       Page 90 
                           auto-comment ]


   ipn-extra-information =
            "The following information types were converted:"
            encoded-info

   ipn-content-return = "The Original Message is not available"
                   / "The Original Message follows:"
                   <CRLF> <CRLF> message


   preferred-recipient = mailbox
   receipt-time        = date-time
   auto-comment        = printablestring
   ipn-suppl           = printablestring


   non-receipt-reason = "Discarded" / "Auto-Forwarded"

   discard-reason     = "Expired" / "Obsoleted" /
                           "User Subscription Terminated"

   acknowledgement-mode = "Manually" / "Automatically"


   ms-field = "Obsoletes" ":" 1#msg-id
            / "Expiry-Date" ":" date-time
            / "Reply-By" ":" date-time
            / "Importance" ":" importance
            / "Sensitivity" ":" sensitivity
            / "Autoforwarded" ":" boolean
            / "Incomplete-Copy" ":"
            / "Language" ":" language
            / "Message-Type" ":" message-type
            / "Discarded-X400-IPMS-Extensions" ":" 1#oid

   importance      = "low" / "normal" / "high"


   sensitivity     = "Personal" / "Private" /
                          "Company-Confidential"

   language        = 2*ALPHA [ language-description ]
   language-description = printable-string


   message-type    = "Delivery Report"

Top      Up      ToC       Page 91 
                   / "InterPersonal Notification"
                   / "Multiple Part"


Appendix F - Format of address mapping tables

   There is a need to specify the association between the domain and
   X.400 namespaces described in Chapter 4.  The use of this association
   leads to a better service on both sides of the gateway, and so
   defining mappings and distributing them in the form defined in this
   appendix is strongly encouraged.

   This syntax defined is initially in table form, but the syntax is
   defined in a manner which makes it suitable for use with domain
   nameservices (such as the Internet Domain nameservers or the UK NRS).
   The mapping is not symmetric, and so a separate table is specified
   for each direction.  If multiple matches are possible, the longest
   possible match should be used.

   First, an address syntax is defined, which is compatible with the
   syntax used for 822.domains.  It is intended that this syntax may be
   used in conjunction with systems which support this form of name.

   To allow the mapping of null attributes  to be represented, the
   pseudo-value "@" (not a printable string character) is used to
   indicate omission of a level in the hierarchy.  This is distinct from
   the form including the element with no value, although a correct
   X.400 implementation will interpret both in the same manner.

   This syntax is not intended to be handled by users.

      dmn-or-address  = dmn-part *( "." dmn-part )
      dmn-part        = attribute "$" value
      attribute       = standard-type
                      / "~" dmn-printablestring
      value           = dmn-printablestring
                      / "@"

      dmn-printablestring =
                          = *( dmn-char / dmn-pair )
      dmn-char        = <"{", "}", "*", and any ps-char
                                              except ".">
      dmn-pair        = "."

      An example usage:

      ~ROLE$Big.Chief.ADMD$ATT.C$US
      PRMD$DEC.ADMD$@.C$US

Top      Up      ToC       Page 92 
   The first example illustrates quoting of a ".", and the second
   omission of the ADMD level.

   Various further restrictions are placed on the usage of dmn-or-
   address:

   1.   Only C, ADMD, PRMD, O, and OU may be used.

   2.   There must be a strict ordering of all components, with the
        most significant components on the RHS.

   3.   No components may be omitted from the hierarchy, although
        the hierarchy may terminate at any level.  If the mapping is
        to an omitted component, the "@" syntax is used.

   For domain -> X.400:

          domain-syntax "#" dmn-or-address "#"

   Note that the trailing "#" is used for clarity, as the dmn-or-
   address syntax can lead to values with trailing blanks.   Lines
   staring with "#" are comments.

      For example:

      AC.UK#PRMD$UK.AC.ADMD$GOLD 400.C$GB#
      XEROX.COM#O$Xerox.ADMD$ATT.C$US#
      GMD.DE#O$@.PRMD$GMD.ADMD$DBP.C$DE#

   For X.400 -> domain:

      dmn-or-address "#" domain-syntax "#"

      For example:

      #
      # Mapping table
      #
      PRMD$UK.AC.ADMD$GOLD 400.C$GB#AC.UK#

References

   [Braden89a]  Braden, R., Editor, "Requirements for Internet Hosts --
   Application and Support", RFC 1123, USC/Information Sciences
   Institute, October 1989.

   [CCITT88a]  CCITT, "CCITT Recommendations X.408", Message Handling
   Systems: Encoded Information Type Conversion Rules, CCITT, December

Top      Up      ToC       Page 93 
   1988.

   [CCITT/ISO88a]  CCITT/ISO, "CCITT Recommendations X.400/ ISO IS
   10021-1", Message Handling: System and Service Overview, CCITT/ISO,
   December 1988.

   [CCITT/ISO88b]  CCITT/ISO, "CCITT Recommendations X.420/ ISO IS
   10021-7", Message Handling Systems: Interpersonal Messaging System,
   CCITT/ISO, December 1988.

   [CCITT/ISO88c]  CCITT/ISO, "CCITT Recommendations X.411/ ISO IS
   10021-4", Message Handling Systems: Message Transfer System: Abstract
   Service Definition and Procedures, CCITT/ISO, December 1988.

   [CCITT/ISO88d]  CCITT/ISO, "Specification of Abstract Syntax Notation
   One (ASN.1)", CCITT Recommendation X.208 / ISO IS 8824, CCITT/ISO,
   December 1988.

   [Crocker82a]  Crocker, D., "Standard of the Format of ARPA Internet
   Text Messages", RFC 822, August 1982.

   [Horton86a]  Horton, M., "UUCP Mail Interchange Format Standard", RFC
   976, February 1986.

   [Kille84b]  Kille, S., "Gatewaying between RFC 822 and JNT Mail", JNT
   Mailgroup Note 15, May 1984.

   [Kille84a]  Kille, S., Editor, "JNT Mail Protocol (revision 1.0)",
   Joint Network Team, Rutherford Appleton Laboratory, March 1984.

   [Kille86a]  Kille, S., "Mapping Between X.400 and RFC 822",  UK
   Academic Community Report (MG.19) / RFC 987, June 1986.

   [Kille87a]  Kille, S., "Addendum to RFC 987", UK Academic Community
   Report (MG.23) / RFC 1026, August 1987.

   [Kille89a]  Kille, S., "A String Encoding of Presentation Address",
   UCL Research Note 89/14, March 1989.

   [Kille89b]  Kille, S., "Mapping Between Full RFC 822 and RFC 822 with
   Restricted Encoding", RFC 1137, December 1989.

   [Larmouth83a]  Larmouth, J., "JNT Name Registration Technical Guide",
   Salford University Computer Centre, April 1983.

   [Mockapetris87a]  Mockapetris, P., "Domain Names - Concepts and
   Facilities", RFC 1034, USC/Information Sciences Institute, November
   1987.

Top      Up      ToC       Page 94 
   [Postel82a]  Postel, J., "Simple Mail Transfer Protocol", RFC 821,
   USC/Information Sciences Institute, August 1982.

   [Rose85a]  Rose M., and E. Stefferud, "Proposed Standard for Message
   Encapsulation", RFC 934, January 1985.

   [Systems85a]  CEN/CENELEC/Information Technology/Working Group on
   Private Message Handling Systems, "FUNCTIONAL STANDARD A/3222",
   CEN/CLC/IT/WG/PMHS N 17, October 1985.

Security Considerations

   Security issues are not discussed in this memo.

Author's Address

   Steve Kille
   University College London
   Gower Street
   WC1E 6BT
   England

   Phone: +44-1-380-7294

   EMail: S.Kille@Cs.Ucl.AC.UK