Network Working                                           C. Allocchio
Group                                                       GARR-Italy
INTERNET-DRAFT                                          September 1998
                                                   Expires: March 1999
                                  File: draft-ietf-fax-fulladdr-04.txt




         GSTN address element extensions in e-mail services



Status of this Memo

This document is an Internet Draft.  Internet Drafts are working
documents of the Internet Engineering Task Force (IETF), its Areas,
and its Working Groups.  Note that other groups may also distribute
working documents as Internet Drafts.  Internet Drafts are draft
documents valid for a maximum of six months.  Internet Drafts may be
updated, replaced, or obsoleted by other documents at any time.  It is
not appropriate to use Internet Drafts as reference material or to
cite them other than as a "working draft" or "work in progress".
Please check the I-D abstract listing contained in each Internet Draft
directory to learn the current status of this or any other Internet
Draft.


1. Introduction

   The possible elements composing a 'Global Switched Telephone Network
   (GSTN) address in e-mail' (formerly known also as Public Switched
   Telephone Network - PSTN) can vary from a minimum number up to a
   really large and complex collection: the minimal format and general
   address syntax are defined in [1], together with the syntax to define
   additional address elements.

   To ensure interoperability among different applications, also the
   additional, and in most cases optional, address elements must be
   defined in a standard syntax. In this memo we define some of these
   additional address elements:

     - the detailed definition of GSTN number formats, in order to cover
       all the possible and different GSTN numbering schema (gstn-phone,
       sub-addr-spec and post-dial)

     - the message originator / recipient specification (pstn-recipient)

   The definitions included in this memo always superset the minimal
   profile defined in [1]. The "incremental alternatives" syntax defined
   in [4] is used to describe this fact.

   GSTN addresses in e-mail MAY contain additional elements defined in
   other specifications (see for example "T33S" element in [2]), but
   they MUST use definitions contained in this memo for those elements
   already specified here.

   Even if in this memo we focus on e-mail addresses, a number of elements
   defined in this specification can also be used for other specifications
   dealing with embedding GSTN addresses into other addresses: for example
   there is some work in progress about URLs specification which adopts
   similar definitions, with slight changes in the global syntax due to
   specific URL format.

   Finally, in this memo we try to maintain maximum compatibility
   with existing e-mail gateway services and standard specifications.
   In particular we will use as much as possible compatible definitions
   with MIXER [3] gateways specifications, in order to facilitate
   transparent e-mail address translations without unduly complex mappings.

   In this document the formal definitions are described using ABNF
   syntax, as defined into [4]. We will also use some of the "CORE
   DEFINITIONS" defined in "APPENDIX A - CORE" of that document. The
   exact meaning of the capitalised words

      "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
      "SHOULD NOT", "RECOMMENDED",  "MAY", "OPTIONAL"

   is defined in reference [5].


2. GSTN extended number and pstn-mbox extended format

   In reference [1], section 2, the minimal definition of pstn-mbox
   includes the global-phone element, and further details are defined
   in [1] section 2.1.

   However other non global-phone numbering schema are allowed, too.
   In order to describe these more general schema, we thus expand the
   scenario defining the GSTN extended number format:

      gstn-phone = ( global-phone / local-phone )

   The complexity of the GSTN system includes also the optional use of
   subaddresses and post dialling sequences. As a consequence the extended
   definition of pstn-mbox becomes:

      pstn-mbox = service-selector "=" global-phone

      pstn-mbox =/ service-selector "=" gstn-phone
                   [ sub-addr-spec ] [post-sep post-dial]

   NOTE: see section 4 in case multiple sub-addr-spec per pstn-mbox need
         to be specified.


2.1 The local-phone syntax

   The local-phone element can be used to represent all possible cases
   where the global-phone does not apply. In order to cover all possible
   different and complex conventions in use in the GSTN system, the
   local-phone definition allows a large number of elements. Please
   note that local-phone MUST NOT start with a "+" sign, as this is
   reserved for global-phone definition.

   We now define in details local-phone:

      local-phone = [ exit-code ] [ dial-number ]

      exit-code = phone-string
                  ; this include anything needed to enable dialling, like
                  ; the digit to access outside line, the long distance
                  ; carrier access code, the access password to the service,
                  ; etc...


      dial-number = phone-string
                  ; this is in many cases composed of different elements
                  ; like the local phone number, the area code (if needed),
                  ; the international country code (if needed), etc...

      phone-string = 1*( DTMF / pause / tonewait / written-sep )

      DTMF = ( DIGIT / "#" / "*" / "A" / "B" / "C" / "D" )
                     ; special DTMF codes like "*", "#", "A", "B",
                     ; "C", "D" are defined in [6]
                     ; Important Note: this is NOT the alpha to digit
                     ; convention in use in some countries.

      pause = "p"

      tonewait = "w"


   NOTE: "pause" and "tonewait" character interpretation in local-phone numbers
         depends on the specific MTA implementation. Thus its exact meaning
         need not to be defined here. Both "pause" and "tonewait" are case
         insensitive.

   The written-sep is defined in [1], section 2.1; other specification for
   some particular services (like for example voice messaging service) CAN
   allow additional separators. Their definition MUST be detailed into
   the documents defining the addressing for the specific service.

   Important Note:
         A local-phone specification is a sequence which should be dialled
         by the MTA specified by mta-I-pstn (see [1], section 3) to reach
         the destination device. Other MTAs should only transfer the message
         around without modification until the destination MTA is reached.
         However, this implementation scenario is extremely complex and full
         discussion of it is outside the scope of this document.


2.2 The sub-addr-spec element

   In GSTN service there are cases where a sub-addr-spec is required to
   specify the final destination. In particular there are ISDN subaddresses
   [7], which apply to all possible services, while other types are
   limited to specific services (see the fax service T.33 subaddress [8],
   [2]).

   We must thus be able to specify at least the ISDN subaddress, remembering
   that an ISDN subaddress could be supplemented by other subaddress types
   (like a fax T.33 [8] subaddress).

   As a consequence, the definition of sub-addr-spec is:

      sub-addr-spec = [ isdn-sep sub-addr ]

   In detail:

      isdn-sep = "/ISUB="
                 ; note that "/ISUB=" is case INSENSITIVE

      sub-addr = 1*( DIGIT )

      sub-addr =/ 1*( DIGIT / written-sep )


2.3 The post-dial element

   In some cases, after the connection with the destination GSTN
   device has been established, a further dialling sequence can be
   required to access further services; a typical example are the
   automated menu-driven services using DTMF sequences on the
   telephone services. These sequences are defined as a separator
   and a post dial sequence:

      post-sep =  "/POSTD="
                  ; note that "/POSTD=" is case INSENSITIVE

      post-dial = phone-string

   A number of gstn-phone examples are listed in section 4


3. The pstn-recipient

   The pstn-mbox element is sometimes not enough to specify additional
   Details, like the originator / recipient name, physical address, etc.
   The optional pstn-recipient element provides information which could
   also be used by the onramp / offramp gateway to specify the originator /
   recipient exactly. In many cases the pstn-recipient element will be
   used for recipient addresses: however also originator addresses could
   be specified using pstn-mbox and pstn-recipient, in particular if onramp
   gateways are involved.

   As an example, when an offramp fax gateway is involved, the
   pstn-recipient element could be used to specify the intended recipient
   on a fax cover page; again the fax cover page headers could be qualified
   using the originator pstn-recipient information.

   Please note: in this document many ABNF variables contain the "recipient"
   token, but all these elements can be applied both to originator / recipient
   addresses.

   The pstn-recipient is a sequence of qualif-type1 elements, as defined
   in [1], section 2:

      pstn-recipient = [ recipient-name ]
                       [ 1*( recipient-qualifier ) ]


   As a consequence, the extended definition of pstn-address becomes:

      pstn-address = pstn-mbox  [ qualif-type1 ]

      pstn-address =/ pstn-mbox [ pstn-recipient ] [ qualif-type1 ]

3.1 The recipient-name

   The recipient-name specifies the personal name of the originator /
   recipient:

      recipient-name = "/ATTN="
                       [ givenname "." ]
                       [ initials "." ]
                       surname

   The following definitions come directly from MIXER specification [3]:

      surname = printablestring

      givenname = 1*( DIGIT /  ALPHA / SP / "'" / "+" /
                    "," / "-" / "/" / ":" / "=" / "?" )

      initials = 1*ALPHA


   NOTE: the "initials" element does not simply specify the
         middle initial which is common in some countries; it
         allows the complete set of givennames initials in any
         possible combination. See examples at section 5.2


   It is essential to remember that "pstn-address" element (in all its
   components and extensions) MUST strictly follow the "quoting rules"
   spcified in the relevant standards [11], [12].


3.2 The extensible recipient-qualifier

   The recipient-name is sometimes not enough to specify completely the
   originator / recipient. A set of elements is thus defined:

      recipient-qualifier = ( qualif-type1 / qualif-type2 )

   The recipient-qualifier is a qualif-type1 element, and contains
   a qualif-type1 element in a recursive definition which allows an
   extensible format. However we define at least a number of these
   elements, calling them "qualif-type2"

      qualif-type2 = "/" qual2-label "=" string

      qual2-label = "ORG" / "OFNO" / "OFNA" / "STR" / "ADDR"
                    "ADDU" / "ADDL" / "POB" / "ZIP" / "CO"

      string = PCHAR
               ; note that printable characters are %x20-7E

      printablestring = 1*( DIGIT / ALPHA / SP /
                            "'" / "(" / ")" / "+" / "," / "-" /
                            "." / "/" / ":" / "=" / "?" )
                        ; this definition comes from ITU F.401 [9]
                        ; and MIXER [3]

   We briefly describe in Table 1 the meaning of qual2-label fields:


                        Table 1 - qual2-label

   qual2-label  Description
   -----------------------------------------------------------------
      "ORG"     Organization Name for Physical Delivery (example: ACME Inc)

     "OFNO"     Office Number for physical delivery (example: BLD2-44)

     "OFNA"     Office Name for physical delivery (example: Sales)

      "STR"     Street address for physical delivery (example:
                45, Main Street)

     "ADDR"     Unformatted postal address for physical delivery
                (example: HWY 14, Km 94.5 - Loc. Redhill)

     "ADDU"     Unique postal name for physical delivery (example:
                ACMETELEX)

     "ADDL"     Local postal attrobutes for physical delivery (example:
                Entrance 3, 3rd floor, Suite 296)

      "POB"     Post Office Box for physical delivery

      "ZIP"     Postal ZIP code for physical delivery

       "CO"     Country Name for physical delivery
-----------------------------------------------------------------

   The above elements are usually enough to exactly specify the
   originator / recipient of the message.

   IMPORTANT NOTE: even if the meaning of the above elements is derived
   directly from similar elements available in F.401 specification [9]
   their names is explicitly different, in order not to conflict with
   specific X.400 addressing rules. Also any additional qualif-type1
   element defined in different specification SHOULD use different
   label names to avoid possible conflicts.


4. Multiple sub-addr-spec cases

   In case there are multiple sub-addr-spec to be given on the same
   pstn-mbox then multiple pstn-email elements will be used. The UA could
   accept multiple sub-addr-spec elements for the same global-phone /
   local-phone, but it MUST generate multiple pstn-mbox, when passing the
   message to the MTA.


5. Examples

   In order to clarify the specification we present here a limited
   set of examples. Many of the examples refer to the fax service,
   but also additional possible services are included. Check also
   the examples in [1] and [2] for additional information.

5.1 pstn-mbox examples

   A pstn-mbox address in Italy for the fax service, dialled from
   U.S.A., using local-phone, without sub-addr-spec and without
   written-sep:

     FAX=0103940226338

   A pstn-mbox address in Germany for an hypotetical XYZ service, using
   global-phone, with ISDN sub-addr-spec 1234 and written-sep ".":

     XYZ=+49.81.7856345/ISUB=1234

   A pstn-mbox address in U.S.A. for fax service, using global-phone,
   with T.33 sub-addr-spec 8745, with written-sep "-" and post-dial sequence
   p1w7005393w373

     FAX=+1-202-455-7622/T33S=8745/PostD=p1w7005393w373

   A pstn-mbox address in Italy for fax service, using local-phone,
   dialed from an MTA in Germany, (international access code "00",
   with ISDN subaddress 9823, with T.33 subaddress "4312" and without
   pause or written-sep:

     FAX=003940226338/Isub=9823/T33S=4312

   The same pstn-mbox address in Italy, using local-phone dialed from
   an MTA in Italy (long distance call), with long distant access "0",
   with exit-code "9", T.33 subaddress "4312", pause "p" and written-sep
   ".":

     FAX=9p040p22.63.38/t33s=4312

   A pstn-mbox address in North America for hypotetical service XYZ,
   using global-phone, without sub-addr-spec and written-sep "-" and ".":

     XYZ=+1.202.344-5723


   A pstn-mbox address for fax service in France, using local-phone
   dialed from an MTA in France (long distance call), with exit-code
   "0", T.33 subaddress "3345" and pause "p":

     FAX=0p0134782289/T33s=3345

   A pstn-mbox address for fax service in North America, using local-phone,
   without sub-addr-spec, without local-number, using only post-dial
   sequences to reach numbers stored in a locally defined short-dial numbers
   database, where 6743 is an access password, and 99p51 is the sequence to
   access the local short-dial number:

     FAX=/postd=w6743w99p51


5.2 pstn-recipient examples

   Here are a number of pstn-recipient examples. Please note that
   pstn-recipient is just an optional element, and thus a pstn-mbox
   element also is required in a pstn-address.

   A pstn-recipient using only recipient-name, with givenname initials
   and surname:

     /ATTN=Tom.J.Smiths

   A pstn-recipient using only recipient-name, with givenname, a
   complete set of initials (including the first name initial "C") and
   surname (where the "real life" givennames are "Carlo Maria Luis
   Santo" and the surname is "Nascimento"):

     /ATTN=Carlo.CMLS.Nascimento

   A pstn-recipient using only recipient-name, with givenname and
   surname:

     /ATTN=Mark.Collins

   A pstn-recipient using only recipient-name, with surname only:

     /ATTN=Smiths

   A pstn-recipient using recipient-name, and one recipient-qualifier
   element:

     /ATTN=J.Smiths/OFNA=Quaility-control

   A pstn-recipient using two recipient-qualifier extension, only:

     /OFNO=T2-33A/OFNA=Quality-Ccontrol

   A fax-recipient using some recipient-quelifier for physical delivery:

     /STR=45, Main.Street/OFNA=Sales.dept


5.3 pstn-address examples

  Some pstn-address examples, obtained combining elements from
  previous examples. There are complete addresses which can
  be used as "local part" (LHS) element of an e-mail address.

  Without optional pstn-recipient (fax service):

     FAX=+12023445723

  With pstn-recipient (XYZ service):

     XYZ=+3940226338/ATTN=Mark.Collins

  With pstn-recipient made of two recipient-qualifier extensions
  (fax service):

     FAX=9p040p22.63.38/t33s=4312/ofno=T2-33A/OFNA=Q-C


5.4 pstn-email examples

  Here are the same addresses as before, where "faxgw" is the
  mta-I-pstn field for the fax service.

     FAX=+12023445723@faxgw

     FAX=+39-40-226338/ATTN=Mark.Collins@faxgw

     FAX=9p040p226338/T33S=4312/OFNO=T2-33A/OFNA=Q-C@faxgw

     FAX=+39040226338/ATTN=Mark.Collins/@faxgw

  NOTE: the optional "/" in front for the "@" sign can be generated
        by gateways to other services, like MIXER [3].


5.5 A complete SMTP transaction example:

  Here is an example of complete SMTP transaction.

    S: <listening on SMTP port>
    C: <opens connection to SMTP port>
    S: 220 foo.domain.com ESMTP service ready
    C: EHLO pc.mailfax.com
    S: 250 foo.domain.com says hello
    C: MAIL FROM:<tom@mailfax.com>
    S: 250 <tom@mailfax.com> Sender ok
    C: RCPT TO:<FAX=+3940226338@foo.mailfax.com>
    S: 250 <FAX=+3940226338> recipient ok
    C: DATA
    S: 354 Enter your data
    C: From: Thomas Blake <tom@mailfax.com>
    C: To: Jim Burton <FAX=+3940226338@foo.mailfax.com>
    C: Subject: Hello there
    C: MIME-version: 1.0
    C: Date: Mon, 01 Sep 1997 18:14:23 -0700
    C: Content-Type: multipart/mixed; boundary=16820115-1435684603#2306
    C:
    C: This is a MIME message. It contains a
    C: TIFF fax bodypart
    C:
    C: --16820115-1435684603#2306
    C: Content-Type: image/TIFF
    C: Content-Tranfer-Encoding: BASE64
    C: Content-Description: FAX
    C:
    C: ABAA745HDKLSW932ALSDL3ANCVSASDFLALSDFA
    C: 87AASS2999499ASDANASDF0000ASDFASDFNANN
    C: 87BBHDXBADS00288SADFNAZBZNNDNNSNNA11A0
    C: H8V73KS0C8JS6BFJEH78CDWWDUJEDF7JKES8==
    C: --16820115-1435684603#2306--
    C: .
    S: 250 Okay
    C: QUIT
    S: 221 Goodbye


6. Conclusion

   This proposal creates a standard set of extensions for GSTN addresses,
   enriching the existig minimal specification [1]. The proposal requires
   no changes to existing e-mail software, and allows a more detailed
   address specification, including per originator / recipient specific
   elements.


7. Security Considerations

   This document specifies a means by which GSTN addresses and more
   can be encoded into e-mail addresses. As routing of e-mail messages
   is determined by Domain Name System (DNS) information, a succesful
   attack on this service could force the mail path via some particular
   gateway or message transfer agent where mail security can be
   affected by compromised software.

   There are several means by which an attacker might be able to
   deliver incorrect mail routing information to a client. These
   include: (a) compromise of a DNS server, (b) generating a
   counterfeit response to a client's DNS query, (c) returning
   incorrect "additional information" in response to an unrelated
   query. Clients SHOULD ensure that mail routing are based only
   on authoritative answers. Once DNS Security mechanisms [7]
   become more widely deployed, clients SHOULD employ those mechanisms
   to verify the authenticity and integrity of mail routing records.

   Some GSTN service require dialing of private codes, like Personal
   Identification Numbers, to access special services. As e-mail
   addresses are transmitted without encoding over the MTAs transport
   service, this could allow unauthorized people to gain access to
   these codes when used inside local-phone. Use of double key
   encryption techniques for local-phone can solve these security
   problem.


8. Copyright

   "Copyright (C) The Internet Society (date). All Rights Reserved.

   This document and translations of it may be copied and furnished to
   others, and derivative works that comment on or otherwise explain it
   or assist in its implmentation may be prepared, copied, published and
   distributed, in whole or in part, without restriction of any kind,
   provided that the above copyright notice and this paragraph are
   included on all such copies and derivative works.  However, this
   document itself may not be modified in any way, such as by removing
   the copyright notice or references to the Internet Society or other
   Internet organizations, except as needed for the  purpose of
   developing Internet standards in which case the procedures for
   copyrights defined in the Internet Standards process must be followed,
   or as required to translate it into languages other than English.

   The limited permissions granted above are perpetual and will not be
   revoked by the Internet Society or its successors or assigns.

   This document and the information contained herein is provided on an
   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
   NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL
   NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
   FITNESS FOR A PARTICULAR PURPOSE."


9. Appendix: Collected ABNF Syntax

   In this section we provide a summary of ABNF specifications defining both
   the minimal [1] and the extended elements of pstn-address.

      pstn-email =  ["/"] pstn-address ["/"] "@" mta-I-pstn

      mta-I-pstn = domain

      pstn-address = pstn-mbox  [ qualif-type1 ]

      pstn-address =/ pstn-mbox [ pstn-recipient ] [ qualif-type1 ]

      pstn-mbox = service-selector "=" global-phone

      pstn-mbox =/ service-selector "=" gstn-phone
                   [ sub-addr-spec ] [post-sep post-dial]

      service-selector = 1*( DIGIT / ALPHA / "-" )

      qualif-type1 = "/" keyword "=" string

      keyword = 1*( DIGIT / ALPHA / "-" )

      string = PCHAR

      gstn-phone = ( global-phone / local-phone )

      global-phone = "+" 1*( DIGIT , written-sep )

      local-phone = [ exit-code ] [ dial-number ]

      exit-code = phone-string

      dial-number = phone-string

      phone-string = 1*( DTMF / pause / tonewait / written-sep )

      DTMF = ( DIGIT / "#" / "*" / "A" / "B" / "C" / "D" )

      written-sep = ( "-" / "." )

      pause = "p"

      tonewait = "w"

      sub-addr-spec = [ isdn-sep sub-addr ]

      isdn-sep = "/ISUB="

      sub-addr = 1*( DIGIT )

      sub-addr =/ 1*( DIGIT / written-sep )

      post-sep =  "/POSTD="

      post-dial = phone-string

      pstn-recipient = [ recipient-name ]
                       [ 1*( recipient-qualifier ) ]

      recipient-name = "/ATTN="
                       [ givenname "." ]
                       [ initials "." ]
                       surname

      surname = printablestring

      givenname = 1*( DIGIT /  ALPHA / SP / "'" / "+" /
                    "," / "-" / "/" / ":" / "=" / "?" )

      initials = 1*ALPHA

      recipient-qualifier = ( qualif-type1 / qualif-type2 )

      qualif-type2 = "/" qual2-label "=" string

      qual2-label = "ORG" / "OFNO" / "OFNA" / "STR" / "ADDR"
                    "ADDU" / "ADDL" / "POB" / "ZIP" / "CO"

      printablestring = 1*( DIGIT / ALPHA / SP /
                            "'" / "(" / ")" / "+" / "," / "-" /
                            "." / "/" / ":" / "=" / "?" )


10. Author's Address

   Claudio Allocchio
   Sincrotrone Trieste
   SS 14 Km 163.5 Basovizza
   I 34012 Trieste
   Italy

   RFC822: Claudio.Allocchio@elettra.trieste.it
   X.400:  C=it;A=garr;P=Trieste;O=Elettra;
           S=Allocchio;G=Claudio;
   Phone:  +39 40 3758523
   Fax:    +39 40 3758565


11. References

   [1]  Allocchio, C., "Minimal PSTN address format in Internet Mail",
        RFC 2303, March 1998.

   [2]  Allocchio, C., "Minimal FAX address format in Internet Mail",
        RFC 2304, March 1998.

   [3]  Kille, S., "MIXER (Mime Internet X.400 Enhanced Relay): Mapping
        between X.400 and RFC 822/MIME", RFC 2156, January 1998.

   [4]  Crocker, D. and P. Overell, "Augmented BNF for Syntax
        Specifications", RFC 2234, November 1997.

   [5]  Bradner, S., "Key words for use in RFCs to Indicate Requirement
        Levels", RFC 2119, March 1997.

   [6]  ETSI I-ETS 300,380 - Universal Personal Telecommunication (UPT):
        Access Devices Dual Tone Multi Frequency (DTMF) sender for acoustical
        coupling to the microphone of a handset telephone (March 1995)

   [7]  ITU E.164 - Numbering plan for the ISDN era; recommendation
        E.164/I.331 (August 1991)

   [8]  ITU T.33 - Facsimile routing utilizing the subaddress; recommendation
        T.33 (July, 1996)

   [9]  ITU F.401 - Message Handling Services: Naming and Addressing for
        Public Massage Handling Service; reccommendation F.401 (August 1992)

   [10] ITU F.423 - Message Handling Services: Intercommunication Between
        the Interpersonal Messaging Service and the Telefax Service;
        reccommendation F.423 (August 1992)

   [11] Crocker, D., " Standard for the format of ARPA Internet text
        messages", STD 11, RFC 822, August 1982.

   [12] Braden, R., "Requirements for Internet hosts - application and
        support", RFC 1123, October 1989.