NACIONALINIŲ RAŠMENŲ SIUNTIMO ELEKTRONINIU PAŠTU PROBLEMOS
Rimas Misevičius
Nacionalinių rašmenų siuntimo elektroniniu paštu taisykles nustato MIME standartas (RFC 20452049). 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:
Į 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:
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:
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
Literatūra
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.