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 , 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 . The "incremental alternatives" syntax defined in  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 ), 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  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 . 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 . 2. GSTN extended number and pstn-mbox extended format In reference , section 2, the minimal definition of pstn-mbox includes the global-phone element, and further details are defined in  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  ; 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 , 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 , 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 , which apply to all possible services, while other types are limited to specific services (see the fax service T.33 subaddress , ). 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  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 , 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 : 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 , . 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  ; and MIXER  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  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  and  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 . 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:<firstname.lastname@example.org> S: 250 <email@example.com> Sender ok C: RCPT TO:<FAXfirstname.lastname@example.org> S: 250 <FAX=+3940226338> recipient ok C: DATA S: 354 Enter your data C: From: Thomas Blake <email@example.com> C: To: Jim Burton <FAXfirstname.lastname@example.org> 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 . 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  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  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  Allocchio, C., "Minimal PSTN address format in Internet Mail", RFC 2303, March 1998.  Allocchio, C., "Minimal FAX address format in Internet Mail", RFC 2304, March 1998.  Kille, S., "MIXER (Mime Internet X.400 Enhanced Relay): Mapping between X.400 and RFC 822/MIME", RFC 2156, January 1998.  Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications", RFC 2234, November 1997.  Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", RFC 2119, March 1997.  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)  ITU E.164 - Numbering plan for the ISDN era; recommendation E.164/I.331 (August 1991)  ITU T.33 - Facsimile routing utilizing the subaddress; recommendation T.33 (July, 1996)  ITU F.401 - Message Handling Services: Naming and Addressing for Public Massage Handling Service; reccommendation F.401 (August 1992)  ITU F.423 - Message Handling Services: Intercommunication Between the Interpersonal Messaging Service and the Telefax Service; reccommendation F.423 (August 1992)  Crocker, D., " Standard for the format of ARPA Internet text messages", STD 11, RFC 822, August 1982.  Braden, R., "Requirements for Internet hosts - application and support", RFC 1123, October 1989.