M U T T - levelezõprogram


Készítette: Michael Elkins < mailto:me@cs.hmc.edu >
Fordítás: Csiszér Ákos < http://www.extra.hu/csiszera >
Kisebb szövegjavítások: Gyulai Mihály < http://www.freeyellow.com/members5/gyulai >
Web alá rendezte : Micskó Gábor < trey@debian.szintezis.hu >


 

5. MIME támogatása a Mutt-ban

Nem kis erõfeszítés révén sikerült a Muttot a legjobb szöveges módú
MIME levelezõprogrammá tenni. Minden erõfeszítés azért volt, hogy
a legkényesebb felhasználói igényeket kielégítsük a lehetõ legtöbb
szabvány betartásával. Amikor a MIME támogatást akarod beállítani,
akkor két másik fajta konfigurációs állománnyal is foglalkozni kell.
Az egyik a mime.types fájl, ami a fájl kiterjesztéseket az IANA MIME
típusokhoz rendeli. A másik a 'mailcap' fájl, ahol külsõ parancsokat
adhatsz meg különbözõ MIME típusokhoz.

5.1. MIME használata a Mutt-ban

Három hely (menü) van a Mutt-ban, ahol MIME -vel tudsz foglalkozni.
Ezek: pager (miközben nézed a levelet), az 'attachment' (csatolás)
menü és a compose (szerkesztési) menü.


5.1.1. MIME levél megtekintése a pagerben

Amikor kiválasztasz egy levelet megtekintésre az indexben, akkor a
Mutt visszakódolja az üzenetet a lehetséges 'szöveges' megfelelõjére.
A Mutt maga is támogat néhány MIME típust, pédául: text/plain,
text/enriched, message/rfc882 és message/news. Ráadásul az export
korlátozott verziójú Mutt megismeri a különbözõ PGP MIME típusokat,
mint például: PGP/MIME és application/pgp.

A következõ néhány sorral jelzi a Mutt a csatolást: (ez csak egy
sablon, nem mindegyik így néz ki):

[-- Attachment #1: Description --]
[-- Type: text/plain, Encoding: 7bit, Size: 10000 --]

Ahol 'Description' a csatolás jellemzése, vagy a csatolt file neve.
Az 'Encoding' lehet: 7bit/8bit/quoted-printable/base64/binary.

Ha a Mutt nem tudja lekezelni a talált MIME típust, akkor a következõt
jeleníti meg:

[-- image/gif is unsupported (use 'v' to view this part) --]

('image/gif' nincs támogatva ( a 'v' billentyûvel tudod megnézni
ezt a részt))


5.1.2. Attachment (csatolások) menü

Az alap billentyû hozzárendelés a 'viewing-attachment' -hez a 'v',
ami az adott levél csatolásait megjelenítõ menüt hoz elõ. Az
attachment menüben elmentheted, nyomtathatod, megnézheted és
csõvezetéken átadhatod egy másik programnak a csatolásokat.
Egyszerre több csatoláson is végre- hajthatod ezeket a parancsokat,
a 'tag-prefix' operátor használatával. Válaszolhatsz is a levélre
ebben a menüben; s csak az aktuális (vagy kiválasztott) csatolások
lesznek 'idézve' a válaszban. A csatolásokat mint szöveget tudod
megtekinteni, vagy pedig egy beállított mailcap definíció
segítségével.

Lásd az attachment menü súgóját további információkért.


5.1.3. A Compose (szerkesztési) menü

A compose menü az a menü, amit a levél elküldése elõtt látsz. Itt
megadhatod a címzettek listáját, a tárgyat, stb. Itt találhatod a
csatolások listáját, beleértve a levél törzsét. Ebben a menüben
nyomtathatod (print), másolhatod (copy), szûrheted (filter),
csõvezetéken átadhatod (pipe), szerkesztheted (compose), megnézheted
(review) és átnevezheted a csatolást, vagy a kijelölt csatolásokat.
Megváltoztathatod a csatolási információkat: típus, kódolás
(encoding) és leírás (description).

A csatolások a következõképpen jelennek meg:

- 1 [text/plain, 7bit, 1K] /tmp/mutt-euler-8082-0 <no description>
2 [applica/x-gunzip, base64, 422K] ~/src/mutt-0.85.tar.gz <no description>

A '-' azt jelenti, hogy a Mutt letörli az adott fájlt elküldés után.
Ezt a 'toggle-unlink' (alapban: 'u') paranccsal tudod be- ill. ki-
kapcsolni. A következõ a MIME-típus mezõ, amit az 'edit-type' parancs-
csal tudsz megváltoztatni (alapban: '^T). A következõ a kódolás, ami
lehetõvé teszi bináris adatok 7 bites vonalon való átküldését. Ezt
az 'edit-encoding' utasítással tudod felülbírálni (alapban: '^E').
A következõ a csatolás mérete kilobájtra vagy megabájtra kerekítve.
Ezután a fájl neve következik, amit a 'rename-file' -lal tudsz meg-
változtatni (alapban: R). Az utolsó mezõ a csatolás jellemzése, és az
'edit-description' paranccsal lehet megváltoztatni (alapban: d).


5.2. MIME típusok beállítása a mime.types segítségével

Amikor egy fájlt a leveledhez csatolsz, akkor a Mutt végignézi a saját
mime.types fájlodat a ${HOME}/.mime.types -ban, majd a rendszer
fájlját az usr/local/share/mutt/mime.types -ban (ez a fájl lehet az
usr/share/mutt/ könyvtárban is) vagy a {$prefix}/etc/mime.types-ban.

A mime.types fájl olyan sorokból áll, amelyek tartalmazzák a MIME
típus megnevezését és a hozzá tartozó kiterjesztéseket szóközzel
elválasztva.
Pl:

application/postscript ps eps
application/pgp pgp
audio/x-aiff aif aifc aiff

Egy példa mime.types fájl megtalálható a Mutt disztribúcióban, ami a
leggyakrabban használt MIME típusokat tartalmazza.

Ha a Mutt nem tudja megállapítani a fájl MIME típusát a
kiterjesztésbõl, akkor megnézi magát a fájlt. Ha a fájl nem
tartalmaz bináris adatokat, akkor a Mutt feltételezi, hogy sima
szövegfájl, és 'text/plain' -nek veszi. Ha a fájl bináris adatokat
tartalmaz, akkor a Mutt 'application/octect-stream' -nek jelöli meg.
Meg tudod változtatni a MIME típusát az 'edit-type' parancs
segítségével (alapban: ^T) a compose menüben. Amikor a típust
beírod, az elsõ típusnak az 5 fõ típus közül kell kikerülnie:
application, text, image, video, audio. Ha más típust akarsz
használni, akkor a Mutt nem hajtja végre a változtatást.


5.3. A MIME nézegetõ beállítása a 'mailcap' fájl segítségével

A Mutt támogatja az RFC 1524 MIME konfigurációt, különösen az RFC 1542
'A' függelékben (Appendix A) található Unix specifikus formátumot. Erre
a fájl formátumra gyakran mint 'mailcap' formátumra hivatkoznak. Sok
MIME -t használó program használja a mailcap formátumot, ami lehetõvé
teszi számodra, hogy az összes program részére egy helyen add meg a
különbözõ MIME típusok kezelését. Ismertebb programok, amik ezt
használják: Netscape, XMosaic, lynx és metamail.

Ahhoz, hogy a Mutt az általa belsõleg nem kezelt MIME típusokat le-
kezelje, átnéz egy csomó külsõ konfigurációs fájlt, hogy egy külsõ
parancsot találjon, amivel le lehet kezelni az adott csatolást. Az
alapbeállítás szerinti keresési útvonal a következõ:

${HOME}/.mailcap:/usr/local/share/mutt/mailcap:{$prefix}/etc/mailcap:
/etc/mailcap:usr/etc/mailcap:/usr/local/etc/mailcap

ahol a $HOME a home könyvtárad.

A metamail disztribúció rak fel egy mailcap fájlt, általában az
/usr/local/etc/mailcap -t, ami néhány gyakran használt bejegyzést
tartalmaz.


5.3.1. A mailcap fájl

A 'mailcap' fájl megjegyzések, üres és definíciós sorok sorozatából
áll.

Egy megjegyzés sor egy '#' -el kezdõdik, s a megjegyzéssel folytatódik.

Az üres sor üres. :)

A definíciós sor egy típusból (content type), egy parancsból és
számos opcionális mezõbõl áll. Minden mezõt ';' -vel kell elválasztani.

A típust a MIME szerû típus/altípus formátumban kell megadni.
Pl: text/plain, text/html, image/gif, stb. Ráadásul a mailcap két
fajta egyszerûsítést is megenged. Az egyik, hogy '*' -ot adsz meg az
altípus helyett, a másik, hogy csak a fõ típust adod meg.
Pl: image/* vagy video az összes image ill. video típusra vonatkozik.

A 'parancs' egy Unix utasítás, amivel az adott típust meg tudod te-
kinteni. A parancsok meghívásának két fajtája lehetséges. Az alap-
beállítás az, hogy a MIME üzenet törzsét a parancs megkapja a szab-
ványos bemeneten (stdin). Ezt meg tudod változtatni a %s használatá-
val, amit mint paramétert adsz meg a parancsnál. Ennek hatására a
Mutt elmenti a MIME üzenet törzsét egy ideiglenes fájlba, majd ennek
a nevét adja meg a %s helyett. Mindkét esetben a Mutt megvárja, amíg
a nézõ program végez, amikor is a Mutt eltávolítja az ideiglenes
fájlt, ha az létezik.

Tehát a legegyszerûbb esetben elküldesz egy text/plain üzenetet
a more nevû külsõ lapozónak az stdin-re:

text/plain; more

Vagy átadhatod mint fájlt:

text/plain; more %s

Valószínüleg szeretnéd a lynx-et használni, text/html üzenetek meg-
tekintésére:

text/html; lynx %s

Ebben az esetben a lynx nem támogatja a fájl szabványos bemenetrõl
való beolvasását, tehát a %s -t kell használnod.

Megjegyzés: Egyes régebbi lynx verziókban volt egy hiba. Ezek meg-
nézték a text/html részt a mailcap fájlban. Azt találták, hogy 'lynx'
és meghívták önmagukat. Ez azt eredményezte, hogy folyamatosan meg-
hívták önmagukat, hogy megjelenítsék az adott fájlt.

Másrészt lehet, hogy a lynx-et nem interaktívan akarod használni,
csak azt akarod, hogy a text/html -t alakítsa át text/plain -re.
Ekkor a következõt teheted:

text/html; lynx -dump "%s" | more

Lehet, hogy te csak text/html -k megnézésére akarod a lynx-et hasz-
nálni, és a 'more' lapozót a többi text formátumra, ekkor írhatod ezt:

text/html; lynx "%s"
text/*; more

Ez a legegyszerûbb használata a mailcap fájlnak.


5.3.2. A mailcap fájl biztonságos használata

A MIME paraméterekbe ágyazott shell metakarakterek értelmezése
biztonsági problémákhoz vezethet. A Mutt megpróbálja a paraméte-
reket helyesen idézõjelezni a %s szintaxisnál, és helyettesítés-
sel elkerülni a kockázatos karaktereket. Lásd a "mailcap_sanitize"
változót.

Bár a Mutt mailcap programokat hívó eljárásai biztonságosnak tûnnek,
sok más program is dolgozik mailcap-pel, meglehet, hogy kevesebb
odafigyeléssel.

Tehát a következõ szabályokat érdemes betartani:

Tartózkodj a %-kiterjesztéseknél a shell idézésektõl. Ne idézd õket
se egyszeres, se dupla idézõjellel. A Mutt ezt szakszerûen megcsinál-
ja helyetted, ahogy más programoknak is meg kellene csinálniuk. Ne
rakd õket visszafele idézõjelbe. Légy óvatos a kiértékelendõ állítá-
sokkal, és kerüld õket, amennyire lehetséges. Rossz viselkedés idézõ-
jellel való javítása csak újabb lyukakat teremt; nincs más lehetõség
az idézés kijavítására az elsõ helyen.
Ha a %-kiterjesztéseket olyan helyen kell alkalmaznod, ahol szükséges
idézõjel, rakd az értékét egy shell változóba és hivatkozz arra, ahol
szükséges, mint a következõ példában:

(a $charset használata visszafele idézõjelben biztonságos, mivel õ
maga nem tartozik egy további kiértékelés alá)

text/test-mailcap-bug; cat %s; copiousoutput; test=charset=%{charset} \
&& test "`echo $charset | tr '[A-Z]' '[a-z]'`" != iso-8859-1

5.3.3. További lehetõségek a mailcap fájlban

5.3.3.1. Opcionális mezõk

A kötelezõ típus és parancs mezõ után megadhatsz ';' -vel elválasztott
különbözõ állapotjelzõket befolyásoló mezõket. A Mutt a következõ mezõ-
ket ismeri:

copiousoutput:
Ez az állapotjelzõ jelzi, hogy parancs valószínüleg sok szöveges
adatot fog kiírni a szabványos kimenetre (stdout). Ennek hatására
a Mutt egy lapozót fog meghívni (vagy a belsõt, vagy egy külsõt,
a pager változó szerint) a parancs kimenetére. A copiousoutput
nélkül a Mutt úgy veszi, hogy a parancs interaktív. Pl: lehet ezt
használni a more lecserélére az elõzõ részben említett példánál:

text/html; lynx -dump %s ; copiousoutput

Ennek hatására a lynx átalakítja a text/html -t text/plain -re, s
a Mutt a standard lapozót fogja használni az eredmény megjelení-
tésére.

needsterminal:
Ezzel tudod megadni, hogy a Mutt figyelembe vegye-e a "$wait_key"
változót vagy sem egy csatolás 'autoview' -es megtekintésénél.
Amikor a csatolást egy interaktív programmal nézed meg és a meg-
felelõ mailcap bejegyzésnél megtalálható a needsterminal, akkor a
Mutt a "$wait_key" és a program exit státuszából dönti el, hogy
kér-e billentyûlenyomást a külsõ program lefutása után. Minden más
esetben nem áll meg egy gombnyomásra várva.

compose=<command>
Ezzel a mezõvel megadhatod, hogy milyen parancsot indítson el a
Mutt, ha egy új, megadott tipusú MIME csatolást akarsz létrehozni.
Ez a compose menübõl érhetõ el.

composetyped=<command>
Ezzel a mezõvel megadhatod, hogy milyen parancsot indítson el a
Mutt, ha egy új, megadott tipusú MIME csatolást akarsz létrehozni.
Ez a mezõ abban különbözik az elõzõtõl, hogy a Mutt szabványos MIME
fejlécet vár. Ezt az opciót az új csatolás paramétereinek, fájl-
nevének, leírásának, stb. megadására lehet felhasználni. Ez a
funkció is a compose menübõl érhetõ el.

print=<command>
Ezzel tudod megadni, hogy milyen paranccsal nyomtassa ki a megadott
MIME típust a Mutt. Ez csak az attachment és a compose menüben
használható.

edit=<command>
Ez adja meg egy adott MIME típus szerkesztõjét. Ez a compose
menübõl érhetõ el, és ezzel is új csatolást lehet létrehozni.
Szöveges csatolásoknál az így megadott szerkesztõ indul el.

nametemplate=<template>
Ez a mezõ specifikálja a %s formátumát a parancs mezõben. Számos
program igényli a kiterjesztést, pl: képek helyes megjelenítésénél.
Például a lynx csak akkor vesz egy fájlt text/html-nek, ha a kiter-
jesztése .html,
vagy .htm, tehát a lynx -et így érdemes megadni a mailcap fájlban:

text/html; lynx %s; nametemplate=%s.html
text/html; lynx %s; nametemplate=%s.htm

test=<command>
A 'command' -ban megadott parancsot lefuttatva a Mutt eldönti, hogy
ezt a mezõt kell-e használnia vagy sem. A parancs megadása a
'További lehetõségek a parancsok megadásánál' részben található
szabályok szerint történik. Ha a 'command' 0 -val tér vissza, akkor
a Mutt ezt a bejegyzést használja, ha nem 0, akkor a Mutt tovább
keresi a helyes bejegyzést.

Megjegyzés: a 'test' csak megegyezõ típus (content-type) esetén
fut le!
Pl:
text/html; netscape -remote 'openURL(%s)' ; test=RunningX
text/html; lynx %s

Ebben a példában a Mutt lefuttatja a RunningX -et, ami 0 -val tér
vissza, ha az X Window manager fut, és nem 0-val, ha nem fut. Ha a
RunningX nem nullával tér vissza, akkor a Mutt továbbmegy a követ-
kezõ bejegyzésre és a lynx-et indítja el a text/html -re. Persze
mindez csak text/html -k esetén játszódik le.


5.3.3.2. Keresési sorrend

Amikor a Mutt egy bejegyzést keres a mailcap fájlban, akkor a cél-
jának legmegfelelõbbet keresi. Ha például ki akarsz nyomtatni egy
image/gif -et, és a következõ bejegyzések találhatók a mailcap
fájlban, akkor a Mutt a print parancsot tartalmazó sort keresi.

image/*; xv %s
image/gif; ; print= anytopnm %s | pnmtops | lpr; \
nametemplate=%s.gif

A Mutt átlépi az image/* -t, és az image/gif -et használja a
'print' paranccsal.

Ráadásul ezt felhasználhatod az 'Autoview' -nál, hogy két parancsot
adj meg egy csatolás megtekintésére; az egyik automatikusan mutassa
meg, a többi pedig interaktívan induljon az attachment menübõl. Hasz-
nálhatod a 'test' utasítást, hogy eldönthesd, a környezettõl függõen
melyik interaktív nézegetõ induljon el.

text/html; netscape -remote 'openURL(%s)' ; test=RunningX
text/html; lynx %s; nametemplate=%s.html
text/html; lynx -dump %s; nametemplate=%s.html; copiousoutput

'Autoview' -nak a Mutt harmadik bejegyzést fogja választani a
copiousoutput miatt. Interaktív megjelenítésre a Mutt lefuttatja a
RunningX programot, hogy az elsõ bejegyzést kell-e használnia. Ha a
program nem nullával tér vissza, akkor a Mutt a második bejegyzést
(lynx) használja a megjelenítésre.


5.3.3.3. További lehetõségek a parancsok megadásánál

A mailcapben definált különbözõ parancsokat a system() függvénnyel a
/bin/sh -nak adja át. Mielõtt átadja a '/bin/sh -c' -nek, átnézi a
parancsot, ami tartalmazhat speciális Mutt specifikus paramétereket.

A paraméterek:

%s Hasonlóan a mailcap fájlnál lévõhöz, a %s helyére a hívó
program által meghatározott fájlnév kerül. Ez a fájl tartalmaz-
za az üzenet törzsét ami kinyomtatásra, szerkesztésre, meg-
tekintésre vár, vagy annak a fájlnak az elérési útját, ahova
a meghívott program pakolja majd a végeredményt. Ennek a para-
méternek a használatával megelõzhetõ, hogy a Mutt ne írassa ki
a levél törzsét a megtekintõ/kinyomtató/szerkesztõ program
szabványos bemenetére (stdin).

%t A Mutt a %t helyére a levél tartalom-típusát (content-type)
rakja, hasonló forámtumban, mint a mailcap fájl elsõ mezõi
(text/html, image/gif).

%{<parameter>}
A levél Content-Type sorában található 'parameter' értékét
helyettesíti be.
Pl: A leveled tartalmazza a köv. sort:

Content-Type: text/plain; charset=iso-8859-1

A Mutt a '%{charset}' helyére 'iso-8859-1' -t fog rakni. A
'default' metamail mailcap fájl ezt a paramétert használja arra,
hogy elindítson egy xterm -t, ami helyes karaktertáblával
jeleníti meg a levelet.

\% Ez egy '%' -vel lesz helyettesítve.

A Mutt nem támogatja az RFC 1524 -ben specifikált '%F' és '%n'
paramétereket. Ezen paraméterek a többrészes levelek kezeléséhez
szükségesek, de ezeket a Mutt belsõleg megcsinálja.


5.3.4. Egy példa mailcap fájl


Ez elég egyszerû és gyakori mailcap fájl:
______________________________________________________________________
# Mindig X-et futtatok :)
video/*; xanim %s > /dev/null
image/*; xv %s > /dev/null

# Mindig Netscape-et futtatok (esetleg, ha a több memória lenne a gépben)
text/html; netscape -remote 'openURL(%s)'
______________________________________________________________________


Ez a mailcap fájl sok példát tartalmaz:
______________________________________________________________________
# Használj xanim -t az összes video megtekintésére. Xanim indításkor mindig
# kiír egy fejlécet, amit a /dev/null -ra küldök, szóval nem látom.
video/*; xanim %s > /dev/null

# A html -t küldd el egy távoli gépen futtatott netscape-re.
text/html; netscape -remote 'openURL(%s)'; test=RunningNetscape

# Ha a netscape nem fut, de az X igen, akkor indítsd el a netscape-t.
text/html; netscape %s; test=RunningX

# Különben indítsd a lynx -t, hogy mint szöveget megnézhessem.
text/html; lynx %s

# Ez a változat text/html -t konvertál text/plain -re.
text/html; lynx -dump %s; copiousoutput

# Az enriched.sh a text/enriched-et átkonvertálja text/html -re, majd
# a 'lynx -dump' -al text/plain -re alakítja.
text/enriched; enriched.sh ; copiousoutput

# Enscriptet használok, hogy a szöveget egy lapon két oszlopban
# nyomtassam ki
text/*; more %s; print=enscript -2Gr %s

# A netscape hozzáadott egy bejegyzést önmaga számára, hogy JPEG -eket
# belsõleg jelenítse meg
image/jpeg;xv %s; x-mozilla-flags=internal

# Használd az xv -t képek megjelenítésére, ha az X fut
# Ráadásul ez a példa használja a '\'-t, hogy a definíció átnyúljon a
# másik sorba, és definiál egy szerkesztõt a képek számára
image/*;xv %s; test=RunningX; \
edit=xpaint %s

# Konvertáld a képeket szöveges karakterekké a 'netpbm' segítségével
image/*; (anytopnm %s | pnmscale -xysize 80 46 | ppmtopgm | pgmtopbm |
pbmtoascii -1x2 ) 2>&1 ; copiousoutput

# Küldd az Excel táblázatokat az NT -s gépemhez
application/ms-excel; open.pl %s
______________________________________________________________________


5.4. MIME Autoview

A Mutt a mailcap fájlban közvetlenül megadott MIME megtekintõk
használatán kívûl támogatja a MIME csatolások megtekintését a
pagerben is.

Ennek eléréshez definiáld az adott MIME nézegetõt a mailcap fájlban
a copiousoutput opcióval. Ez azért kell, hogy a nézegetõ biztosan ne
legyen interaktív. Ez a bejegyzés arra is szolgálhat, hogy a
csatolást annak szöveges megfelelõjévé alakítsa át, amit már a
pagerben meg lehet tekinteni.

Majd az auto_view muttrc parancsnál tudod felsorolni azokat a
típusokat, amelyeket automatikusan akarsz megtekinteni.

Pl: Ha a auto_view -ot a következõre állítod:

auto_view text/html text/enriched application/x-gunzip \
application/postscript image/gif application/x-tar-gz

A Mutt a következõ mailcap bejegyzéseket fogja használni, hogy
automatikusan megjelenítse az ilyen típusú csatolásokat.

text/html; lynx -dump %s; copiousoutput; nametemplate=%s.html
text/enriched; enriched.sh ; copiousoutput
image/*; anytopnm %s | pnmscale -xsize 80 -ysize 50 | ppmtopgm \
| pgmtopbm | pbmtoascii ; copiousoutput
application/x-gunzip; gzcat; copiousoutput
application/x-tar-gz; gunzip -c %s | tar -tf - ; copiousoutput
application/postscript; ps2ascii %s; copiousoutput

5.5. MIME Multipart/Alternative

A Muttnak van néhány heurisztikája, hogy egy multipart/alternative
típus melyik csatolását jelenítse meg. Elõször megnézi az
alternative_order listát, hogy eldöntse, nem-e élvez az egyik
lehetséges típus elõnyt. Az alternative_order lista tartalmazza a
mime-típusok sorrendjét. Itt lehet használni implicit és explicit
megadásokat is. Pl:

alternative_order text/enriched text/plain text application/postscript image/*

Ezután a Mutt megnézi, hogy az egyik típust nem-e definiáltad az
'autoview'-nál, és ha igen, akkor azt használja. Ellenkezõ esetben
más text típust keres. Végül pedig bármely olyan típust keres, ami
tudja kezelni.