[comp.protocols.iso.x400.gateway] Some problems with RFC 987

buclin@si.di.epfl.ch (Bertrand Buclin) (11/28/88)

  Here is the list of problems I encountered with RfC-987. Some of them may
  seems of minor importance, but I think they may be discussed.

1. X.400 components and RFC-822 field ordering

  RFC-987 states that ordering within P2.Heading and P1.UMPDUEnvelope
  should reflect ordering within the RFC 822 header when converting a
  message from RFC-822 world to X.400. In the reverse gateway, no
  assumption is made on this ordering. Furthermore, I know of no X.400 UA
  which take care of this ordering. Is this ordering absolutely necessary ?

  In some cases, it is impossible to guaranty it. For example with
  P1.RecipientInfo, default values are set accordingly to 822-P1
  informations. But if a P1-Recipient field figures in the header part,
  this field will be completed and won't figure at the right place
  (accordingly to field ordering) in the P1.UMPDUEnvelope. Furthermore,
  RFC-822 fields are mapped either in P1 or P2 components. Because of this
  layering, a strict ordering can't be maintained.

  In a private maile exchange, Steve Kille already agreed that ordering has
  not a lot of reasons to be retained.
  
2. X400-Trace: field

  In the mapping of this field, RFC-987 mark the action component as
  optional :

  x400-trace = global-id ";"
               "arrival" date-time
	       [ "deferred" date-time ]
	       [ "action" action ]		      ; <--
	       [ "converted" "(" encoded-info ")" ]
	       [ "previous" global-id ]

  X.411 (3.4.1.5) mention the TraceInformation.action component as
  mandatory and with no default value. CCITT X.400-Series Implentor's Guide
  (Geneva, 3-oct-1986) enforce this requirment by giving exact rules on
  TraceInformation.action useage, especially for loop detection.

  I'm afraid that some simple RFC-987 gateway will discard each optional
  component and thus introduce erroneous header fields. 

3. Mapping of RFC-822 Received: field.

  RFC-987 states to map the sending host with all other informations
  enclosed between parenthesis to the AdministrationDomainName of a
  P1.DomainSuppliedInfo component (RFC987, 5.1). CCITT X.400-Series
  Implementor's Guide (agreed in Geneva, 3 oct. 1986) fixes to 16
  characters the string length for Admd name (Pragmatic constraints, 4.2).
  The mapping proposed will quite in every case overcome this limitation...
  Since the reverse mapping will not map TraceInformation to Received:, I
  think the additional data enclosed in parentheses may be dropped. 
  
4. RFC-822 From: field

  RFC-822 (4.1, 4.4.1) allows several mailboxes to figures in a From: field.
  If no Sender: field is present in the message, RFC 987 ask to map to
  P2.originator. I believe the mapping to P2.Heading.authorizingUsers must
  also occur when serveral mailboxes are present in a From: field, an no
  P2.Heading.originator component is generated.

5. RFC-822 References: field

  RFC-822 declares the syntax of References: field as follows :

  optional-field = ...
                   / "References" ":" *(phrase / msg-id)
	           ...

  When a reference is a phrase, RFC 987 doesn't at all handle this case. Is
  this phrase simply discarded or should it be mapped to
  P2.IPMessageId.PrintableString ? In the latter case, does the gateway
  generated the ORname, or omit it ?

6. P1.ExtensionIdentifier

  RFC-987 (4.4.1) states that P1.ExtensionIdentifier should be set
  automatically by the X.400 system. But it is a required component and an
  MTA should reject the MPDU if this component is absent. Thus, clearly the
  value must be generated by the gateway. 

7. Multiple P2.BodyPart

  RFC-987 states to use the mapping defined by Rose ad Stefferud in
  [Rose85b] to separate the P2.BodyParts in the single RFC 822 message
  body. The reference given points to an unpublished document (as far as I
  know). Do you have heard of this mapping ? If yes, which is it ?

8. Default RFC-822 mailbox to ORName mapping

  RFC 987, 4.2.3, stage 2.3 ask to build the rest of an unparsable, or ill
  formed, address in the local MD agreed manner. I would like to use the
  conversion tables (as redefined in RFC 1026, appendix F) to implement
  this. One way of doing should be to insert in the mapping table a line
  with an empy domain-syntax part. Of course, this line should not figure
  in international distributed tables, but should be set up by the gateway
  operator.

10. P1.TraceInformation

  When mapping a message coming through X.400 from a RFC 987 gateway (i.e.
  following the route RFC-822->X.400->RFC-822), the first trace component
  will be the incarnation of the RFC-822 Date: field of the original
  message. RFC 987 doesn't state if, when mapping the TraceInformation to
  X400-Trace fields, care should be taken to discard this first component. 


Bertrand Buclin                          BITnet       : BUCLIN@CLSEPF51.Bitnet
Computing Services                       EAN,Internet : Buclin@Elma.Epfl.CH
Computer Science Department              SPAN/HEPnet  : ELMA::BUCLIN (20.34)
Swiss Federal Institute of Technology    PSI : PSI%022846911008::ELMA::BUCLIN
CH-1015 Lausanne                         X400: S=Buclin;OU=Si;ORG=Di;
					       PRMD=Epfl;ADMD=Arcom;C=CH
Tel : +21 / 693 25 86

huitema@jerry.inria.Fr (Christian Huitema) (11/29/88)

Regarding the ``Trace'' mapping, I must confess that Mailway did not follow
Steve's recommendation. Actually, we are building up the ``trace'' field
from the ``Received:'' lines -- seems much more natural.

More precisely, the ``Received'' lines contain a host-name and a date; we
map the host name to a PRMD ID: either the PRMD to which the host belong, when
a mapping exists, or the PRMD of the gateway which serves the host, otherwise.
Then, we ``pack'' the traces by removing all duplicat occurences of a PRMD,
keeping only the earliest date as ``date of arrival''; the action is always
set to ``relayed''.

We are indeed loosing some information. This is due to the limited syntax
of the Trace field in 1984-P1; it will be very naturally overcomed with
1988 P1, where we will be able to use the ``internal trace'' field, at least 
for the last PRMD.

In my opinion, the solution described in the RFC-987 is not implementable:
it leads to using invalid ADMD names, and thus forbids the relaying of the 
message to a public ADMD.

Christian Huitema

S.Kille@CS.UCL.AC.UK (Steve Kille) (02/02/89)

Here are some comments on your comments

 >From:  buclin@ch.epfl.di.si
 >To:    ifip-gtwy@gov.llnl.tis
 >Subject: Some problems with RFC 987
 >Date:  27 Nov 88 15:43 +0100

 >
 >  Here is the list of problems I encountered with RfC-987. Some of them may
 >  seems of minor importance, but I think they may be discussed.

 >1. X.400 components and RFC-822 field ordering

 >  RFC-987 states that ordering within P2.Heading and P1.UMPDUEnvelope
 >  should reflect ordering within the RFC 822 header when converting a
 >  message from RFC-822 world to X.400. In the reverse gateway, no
 >  assumption is made on this ordering. Furthermore, I know of no X.400 UA
 >  which take care of this ordering. Is this ordering absolutely necessary ?

 >  In some cases, it is impossible to guaranty it. For example with
 >  P1.RecipientInfo, default values are set accordingly to 822-P1
 >  informations. But if a P1-Recipient field figures in the header part,
 >  this field will be completed and won't figure at the right place
 >  (accordingly to field ordering) in the P1.UMPDUEnvelope. Furthermore,
 >  RFC-822 fields are mapped either in P1 or P2 components. Because of this
 >  layering, a strict ordering can't be maintained.

 >  In a private maile exchange, Steve Kille already agreed that ordering has
 >  not a lot of reasons to be retained.

 Official - this restriction should definitely not be in RFC 987
 
 >  
 >2. X400-Trace: field

 >  In the mapping of this field, RFC-987 mark the action component as
 >  optional :

 >  x400-trace = global-id ";"
 >               "arrival" date-time
 >	       [ "deferred" date-time ]
 >	       [ "action" action ]		      ; <--
 >	       [ "converted" "(" encoded-info ")" ]
 >	       [ "previous" global-id ]

 >  X.411 (3.4.1.5) mention the TraceInformation.action component as
 >  mandatory and with no default value. CCITT X.400-Series Implentor's Guide
 >  (Geneva, 3-oct-1986) enforce this requirment by giving exact rules on
 >  TraceInformation.action useage, especially for loop detection.

 >  I'm afraid that some simple RFC-987 gateway will discard each optional
 >  component and thus introduce erroneous header fields. 

 I don't think that this will be a serious problem.  I prefer to stick to
the protocol, as use of implementor's guide is not mandatory (however
sensible).  An RFC 987 gateway which discarded an action value would not be
conforming to the spec.

 >3. Mapping of RFC-822 Received: field.

 >  RFC-987 states to map the sending host with all other informations
 >  enclosed between parenthesis to the AdministrationDomainName of a
 >  > P1.DomainSuppliedInfo component (RFC987, 5.1). CCITT X.400-Series
 >  Implementor's Guide (agreed in Geneva, 3 oct. 1986) fixes to 16
 >  characters the string length for Admd name (Pragmatic constraints, 4.2).
 >  The mapping proposed will quite in every case overcome this limitation...
 >  Since the reverse mapping will not map TraceInformation to Received:, I
 >  think the additional data enclosed in parentheses may be dropped. 
 >  

 This is a good point, but I claim that 987 does not violate protocol.
 If it busts implementations - tough.  The mapping of trace is not very
satisfactory, but is is hard to do better - the place where it has to go is
the wrong shape.  I must admit to dislike throwing information away -
particularly trace information.
 
 >4. RFC-822 From: field

 >  RFC-822 (4.1, 4.4.1) allows several mailboxes to figures in a From: field.
 >  If no Sender: field is present in the message, RFC 987 ask to map to
 >  P2.originator. I believe the mapping to P2.Heading.authorizingUsers must
 >  also occur when serveral mailboxes are present in a From: field, an no
 >  P2.Heading.originator component is generated.

 This combination is not legal in 822!  (i.e. out of scope)

 >5. RFC-822 References: field

 >  RFC-822 declares the syntax of References: field as follows :

 >  optional-field = ...
 >                   / "References" ":" *(phrase / msg-id)
 >	           ...

 >  When a reference is a phrase, RFC 987 doesn't at all handle this case. Is
 >  this phrase simply discarded or should it be mapped to
 >  P2.IPMessageId.PrintableString ? In the latter case, does the gateway
 >  generated the ORname, or omit it ?

 You are correct.  Should do as for In-Reply-To (pas in text if not the
mappable syntax)

 >6. P1.ExtensionIdentifier

 >  RFC-987 (4.4.1) states that P1.ExtensionIdentifier should be set
 >  automatically by the X.400 system. But it is a required component and an
 >  MTA should reject the MPDU if this component is absent. Thus, clearly the
 >  value must be generated by the gateway. 

 Well, this is really philosophical.  It will come mcuh cleaner in the 1988
stuff.

 >7. Multiple P2.BodyPart

 >  RFC-987 states to use the mapping defined by Rose ad Stefferud in
 >  [Rose85b] to separate the P2.BodyParts in the single RFC 822 message
 >  body. The reference given points to an unpublished document (as far as I
 >  know). Do you have heard of this mapping ? If yes, which is it ?

RFC 934

 >8. Default RFC-822 mailbox to ORName mapping

 >  RFC 987, 4.2.3, stage 2.3 ask to build the rest of an unparsable, or ill
 >  formed, address in the local MD agreed manner. I would like to use the
 >  conversion tables (as > redefined in RFC 1026, appendix F) to implement
 >  this. One way of doing should be to insert in the mapping table a line
 >  with an empy domain-syntax part. Of course, this line should not figure
 >  in international distributed tables, but should be set up by the gateway
 >  operator.

I don't think that this helps.  If there is a formal mapping, this can be
defined cleanly according to RFC 1026.  This mechanism is to deal with
cases where there are no definitions (with luck, this should be a minority
of addresses).

 >10. P1.TraceInformation

 >  When mapping a message coming through X.400 from a RFC 987 gateway (i.e.
 >  following the route RFC-822->X.400->RFC-822), the first trace component
 >  will be the incarnation of the RFC-822 Date: field of the original
 >  message. RFC 987 doesn't state if, when mapping the TraceInformation to
 >  X400-Trace fields, care should be taken to discard this first component. 

 I don't think that it should be discarded.  There is more information in
this field than the date (in particular the originating MD).  Don't want to
discard this.

 >Bertrand Buclin                          BITnet       : BUCLIN@CLSEPF51.Bitnet
 >Computing Services                       EAN,Internet : Buclin@Elma.Epfl.CH
 >Computer Science Department              SPAN/HEPnet  : ELMA::BUCLIN (20.34)
 >Swiss Federal Institute of Technology    PSI : PSI%022846911008::ELMA::BUCLIN
 >CH-1015 Lausanne                         X400: S=Buclin;OU=Si;ORG=Di;
 >					       PRMD=Epfl;ADMD=Arcom;C=CH
 >Tel : +21 / 693 25 86


Steve

S.Kille@CS.UCL.AC.UK (Steve Kille) (02/02/89)

 >From:  Christian Huitema <huitema@fr.atlas.aristote.inria.jerry>
 >To:    ifip-gtwy-request@gov.llnl.tis
 >Subject: Re: Some problems with RFC 987
 >Date:  31 Nov 88 09:20:13+0100

 >Regarding the ``Trace'' mapping, I must confess that Mailway did not follow
 >Steve's recommendation. Actually, we are building up the ``trace'' field
 >from the ``Received:'' lines -- seems much more natural.

 Tut tut

 >More precisely, the ``Received'' lines contain a host-name and a date; we
 >map the host name to a PRMD ID: either the PRMD to which the host belong, when
 >a mapping exists, or the PRMD of the gateway which serves the host, otherwise.
 >Then, we ``pack'' the traces by removing all duplicat occurences of a PRMD,
 >keeping only the earliest date as ``date of arrival''; the action is always
 >set to ``relayed''.

The packing is sensible, and would need to be done.  987 should have said
this.

 >We are indeed loosing some information. This is due to the limited syntax
 >of the Trace field in 1984-P1; it will be very naturally overcomed with
 >1988 P1, where we will be able to use the ``internal trace'' field, at least
 >for the last PRMD.

 I agree about internal trace - this will be a big help.

 >In my opinion, the solution described in the RFC-987 is not implementable:
 >it leads to using invalid ADMD names, and thus forbids the relaying of the
 >message to a public ADMD.


 987 is certainly implementable!   It will also be consistent with X.400.
 I agree that it might cause interoperability problems with those who have a
 restricive view of the world (PTTs in particular).   

 >Christian Huitema

I am still not sure about this one.  The practicalities of this mean that:
  1) You discard most of the inforamtion in the trace fields in order
  to squeeze into the legal format.
  2) You then throw all bar one of these fields away, picking the first or
  last date (in practice, most items will map to either your own MD, or
  will not have a mapping to an MD and so still map to your own).
You might as well specify discarding the information.   

However, I fear that you are right about the effect of the 897 mapping.
It will be rejected by some ADMDs, and cause other implementations to break.

Catch 22   

Steve