NACIONALINIŲ RAŠMENŲ SIUNTIMO ELEKTRONINIU PAŠTU PROBLEMOS

Rimas Misevičius

Nacionalinių rašmenų siuntimo elektroniniu paštu taisykles nustato MIME standartas (RFC 2045–2049). Apie šio standarto reikalavimus ir kaip įvairios pašto programos jų laikosi jau buvo rašyta anksčiau [2]. Remdamiesi ankstesniais darbais bandysime išskirti esminius reikalavimus, nuo kurių priklauso nacionalinių rašmenų siuntimas elektroniniu paštu, atsižvelgdami į elektroninio pašto programose dažniau pasitaikančias klaidas, pateiksime rekomendacijas.

Galima išskirti tris reikalavimų grupes:

  1. MIME antraštės laukų įrašymas siunčiant laišką, bei jų atpažinimas gautame laiške.
  2. Laiško teksto perkodavimas iš vienos ženklų kodų lentelės į kitą (iš kompiuterio kodo į laiško kodą ir atvirkščiai).
  3. Siunčiamo laiško teksto užkodavimas 7 bitų ženklais ir gauto laiško atkodavimas.

Į siunčiamo laiško antraštę turi būti įrašyti bent trys MIME laukai: „MIME-Version“ (nurodo, jog laiškas atitinka MIME standartą), „Content-type“ (nurodo teksto tipą ir naudojamą ženklų kodavimo lentelę) ir „Content-transfer-encoding“ (nurodo metodą, kuriuo laiško tekstas yra užkoduotas 7 bitų ženklais). Pavyzdžiui:

MIME-Version: 1.0

Content-type: text/plain; charset=ISO-8859-13

Content-transfer-encoding: quoted-printable

Šiuolaikinės pašto programos paprastai įrašo šiuos laukus. Tik pasitaiko programų, kurios nekreipia dėmesio į gauto laiško „Content-type“ lauke nurodytą ženklų kodavimo lentelę (pvz.: Netscape Communicator nereaguoja į šio lauko reikšmę, todėl kodą tenka nurodyti rankiniu būdu). Šiaip su šiais laukais didesnių problemų nekyla.

Netgi vienos kalbos tekstui koduoti gali būti naudojamos kelios skirtingos ženklų kodų lentelės (kokia kodų lentelė naudojama dažnai priklauso nuo operacijų sistemos). Kompiuterio ir laiško kodų lentelės gali nesutapti. Tuomet tekstą reiktų perkoduoti iš vienos kodų lentelės į kitą. Laiško tekstas gali būti koduotas IANA registre (RFC 2278) registruota ženklų kodų lentele. Apie kodų lenteles lietuviškiems laiškams persiųsti jau buvo rašyta [1]. Pirmenybė teikiama ISO-8859 serijos lentelėms: MIME standartas reikalauja rodyti bent jau kairiosios šių lentelių pusės 127 ženklus (RFC 2049). Standarte nėra tiesioginio reikalavimo perkoduoti iš vienos lentelės į kitą. Dėl šios priežasties skiriasi realizacijos. Pagal ženklų kodų lentelių realizaciją programas galima suskirstyti į grupes:

1. Perkoduoja iš vienos lentelės į kitą:

1.1. Dirba su fiksuotu lentelių rinkiniu.

1.2. Programą nesunkiai galima papildyti naujomis kodavimo lentelėmis.

2. Neperkoduoja iš vienos lentelės į kitą:

2.1. Leidžia dirbti tik su viena kodų lentele.

2.2. Leidžia dirbti su įvairiomis kodų lentelėmis. Šiuo atveju kompiuterio kodas turėtų sutapti su laiško kodu.

Perkoduojant iš vienos lentelės į kitą, gali būti prarasti kai kurie ženklai. Tokiu atveju pašto programa apie tai turėtų pranešti laiško gavėjui, bei informuoti apie laiške naudojamą ženklų kodą. Tuomet gavėjas galėtų atitinkamai suderinti kompiuterį taip, kad matytų normalų tekstą. Tokia galimybė dingtų, jei programa gavusi laišką jį iš karto perkoduotų į kompiuterio ženklų kodą ir tokį saugotų (taip elgiasi Demos Mail). Laišką reiktų saugoti tokiam pavidale, koks atėjo paštu, o perkoduoti jį tik rodant gavėjui.

Geriausia išeitis – naudoti vieną ženklų kodavimo būdą įvairioms kalboms. Šiuo metu IETF siūlo įvairiuose Interneto protokoluose naudoti UTF-8 kodą (RFC 2277). „Internet Mail Consorcium“ [3] rekomenduoja kad visos pašto programos sukurtos po 1999 sausio 1 d. galėtų tiek išsiųsti paštą koduotą UTF-8 kodu, tiek gavusios šiuo kodu koduotą laiško tekstą parodyti gavėjui. Kol kas nerekomenduojama atsisakyti ir 8 bitų ženklų, todėl pašto programa turėtų leisti siuntėjui pasirinkti kodą laiško tekstui koduoti. Reiktų pateikti informaciją apie skirtingus kodus (nurodant kokias galimybes matyti tekstą turės gavėjas užkodavus vienu ar kitu kodu), kad siuntėjui būtų lengviau pasirinkti. Iš mūsų tirtų 8 pašto programų: „Eudora Light“, „Microsoft Outlook Express“, „Demos Mail“, „Pegasus Mail“, „Pine“, „Netscape Communicator“, „Tango“, „The Bat“ trys jau dabar dirba su UTF-8 kodu: „Microsoft Outlook Express“, „Netscape Communicator“ ir „Tango“.

MIME standartas buvo kuriamas taikantis prie jau anksčiau galiojančių elektroninio pašto standartų (RFC 822), kurie numato tik 7 bitų ženklų siuntimą. Standarte numatyti du būdai, kaip 8 bitų ženklus užkoduoti 7 bitų ženklais: „quoted-printable“ ir „base64“. Šiuo kodavimu siekiama dar vieno tikslo - sutrumpinti eilutes iki 76 ženklų, kad kai kurios senesnės pašto programos „nenukastų“ ilgų eilučių. Skiriasi laiško kūno ir antraštės laukų kodavimai. Laiško kūno kodavimas aprašytas RFC 2045 dokumente, antraštės laukų – RFC 2047. Koduojant reikia atkreipti dėmesį į šiuos dalykus:

  1. Koduota eilutė turi būti neilgesnė kaip iš 76 ženklų.
  2. Turi būti užkoduoti visi 8 bitų ženklai, o atskirais atvejais kai kurie 7 bitų ženklai.

Antrąjį reikalavimą visuomet tenkina „base64“ kodavimas. Ištyrus įvairias elektroninio pašto programas paaiškėjo , kad koduodamos pastaruoju būdu jos tenkina abu reikalavimus. Kitaip yra su „quoted-printable“ kodavimu, nes galima laisvai pasirinkti kuriuos ženklus koduoti, o kurių ne. MIME reikalauja papildomai koduoti dar šiuos 7 bitų ženklus:

  1. Lygybės „=“ ženklą.
  2. Antraštės laukuose koduoti tarpo, tabuliacijos, „=“, „?“ ir „_“ ženklus. Pabraukimo „_“ ženklu koduojami tarpai.
  3. Adreso lauke esančiame tekste turi būti užkoduoti visi ženklai išskyrus: didžiąsias ir mažąsias ASCII raides, skaitmenis ir ženklus „!“, „*“, „+“, „-“, „/“.

Laiško kūną daugelis programų koduoja gerai. Dažniausiai klaidos pasitaiko koduojant antraštės laukus: nepaisoma eilutės ilgio arba neužkoduojami kai kurie ženklai turintys specialią reikšmę. Antraštės laukų tekstas koduojamas taip vadinamais koduotais žodžiais (RFC 2047). Koduotas žodis prasideda „=?“ ženklais, baigiasi – „?=“, jo viduje vienas nuo kito atskirti „?“ ženklu yra nurodyti: ženklų kodų lentelė, kodavimo 7 bitų ženklais būdas („Q“ arba „B“) ir pats koduotas tekstas. Kai kurios elektroninio pašto programos nepaiso reikalavimo, kad koduotas žodis nebūtų ilgesnis kaip iš 75 ženklų. Tai jau rimtesnis pažeidimas, nes gavėjas gali nematyti normalaus teksto. Kai kurios programos (pvz.: Pine) besilaikydamos MIME reikalavimo tokių ilgų koduotų žodžių neatkoduoja – gavėjui rodo užkoduotą tekstą.

Išvados

  1. Nacionalinių rašmenų persiuntimo problemos atsiranda dėl klaidų elektroniniu pašto programose arba dėl to kad jose nėra kai kurių ženklų kodavimo lentelių. Problema turėtų supaprastėti pradėjus naudoti vieną Unikodo ženklų kodavimą UTF-8. Tuomet viskas susivestų į operacijų sistemos galimybes dirbti su įvairiais ženklais.
  2. MIME standartas suteikia galimybę elektroniniu paštu siųsti nacionalinius simbolius ir pateikia minimalius reikalavimus. Kuriant pašto programas dar reikia atsižvelgti ir į „Internet Mail Consorcium“ rekomendacijas.

Literatūra

  1. Grigas G. Kodų lentelių, vartojamų elektroniniame pašte, analizė. Informacijos mokslai. 9, p. 68–75.
  2. Misevičius R. Elektroninio pašto programų analizė nacionalinių rašmenų persiuntimo požiūriu. Informacijos mokslai. 9, p. 76–86.
  3. Alvestrand H., Crispin M., Davis M., Duerst M., Freed N., Levitt J., Newman C., Resnick P., Vine A., Wattenberger P. Using International Characters in Internet Mail. Internet Mail Consortium Report: MAIL-I18N IMCR-010, August 1, 1998, http://www.imc.org/mail-i18n.html

PROBLEMS OF USING NATIONAL CHARACTERS IN ELECTRONIC MAIL SOFTWARE

This article analyses problems of using national characters in electronic mail software. Three topics are discussed: MIME header fields, using of various character sets and encoding text into a 7-bit short line format. The widespread mistakes and defects, inadequacy to MIME standards in electronic mail software are analyzed. Recommendations to electronic mail software developers are given.