next up previous contents
Next: A Sendmail üzembe állítása Up: Sendmail telepítése és beállítása Previous: Tartalom   Tartalom

Szakaszok

Általános tudnivalók

A levelezőrendszerekről

Az elektronikus levelezésnek az emberen kívül kétféle résztvevője van. Az egyik az, amivel a levelezést igénybe vevő felhasználó kerül kapcsolatba, tehát elküldi az általa megszerkesztett üzenetet, illetve elolvashatja a mailbox-ában található leveleket. Ezeket a programokat Mail User Agent-eknek (MUA) nevezzük (pl. pine, mailx, Pegasus Mail, Eudora stb.). A másik csoportba az ún. Mail Transport Agent (MTA) programok tartoznak; ezeknek a feladata az, hogy a küldő MUA-től, vagy egy másik MTA-től kapott levelet átadják a fogadó MUA-nek vagy egy másik MTA-nek. Egy elektronikus üzenet MTA-ek láncolatán keresztül jut el a küldő MUA-től a címzettig.

A Sendmail rendszer

A sendmail program tulajdonképpen már 1980 óta létezik különféle formákban. A 4BSD és a 4.1BSD rendszerekben delivermail néven jelent meg, míg a 4.2BSD-ben sendmail-ként. A hálózatos UNIX rendszerek körében elég hamar uralkodó levelezőrendszerré vált. A sendmail program elsősorban Eric Allman (Berkeley) nevéhez fűződik, bár ő 1987-91-ig szüneteltette ilyen irányú tevékenységét. Az 1991 után megjelent (és jelenleg is futó) új változatot nevezik 8-as verziónak1.

A sendmail szerepét a következő ábrával lehet összefoglalni:



\resizebox*{0.7\textwidth}{!}{\includegraphics{sendmailstruct.eps}}



A sendmail program tehát nem kerül közvetlenül kapcsolatba a felhasználóval, és nem kézbesít levelet2. Utóbbi alól az az egy eset jelent kivételt, amikor a kimenet közvetlenül egy file-ba kerül. Az üzenetet a címtől függően átadja egy másik mailer (MTA) programnak, szükség szerint módosítva azt (ez leginkább a címeknek a fogadó hálózat számára megfelelően történő átírását jelenti). A valódi kézbesítés hiánya különösen a helyi leveleknél szembetűnő (elvileg megtehetné, hogy ő maga teszi az üzenetet a címzett mailbox-ába), ez azonban azt jelenti, hogy nem kell törődni azzal, hogy az adott rendszerben hol vannak a mailbox-ok, milyen a formátumuk, milyen locking mechanizmus használatos rájuk stb.

A Sendmail program és a külvilág kapcsolata

A sendmail, mint MTA, a következő módokon tud üzenetet átvenni és átadni:

A szabványos felületek használatának köszönhetően a sendmail nagy mértékben nyitott új mailer-ek támogatására.

A Sendmail működése

A küldő program az előbbi három módszer valamelyikét használva kéri meg a sendmail-t az üzenet továbbítására. Az üzenettovábbítás két lépésben történik: először beolvassa és eltárolja az üzenetet, majd elküldi. Ha az elküldés során valami probléma van, a sendmail előállít egy új üzenetet, amiben értesíti a feladót a hibáról.

Az üzenettovábbítás lépései:

1.
Címzettek listájának előállítása. Ha a sendmail meghívása az első két mód valamelyikével történt, elsőként a parancssori argumentumok feldolgozása kerül sorra (opciók, esetleg címzettek). Ezután a címzettek listája az argumentumok vagy az SMTP protokoll RCPT parancsa alapján állítható elő. A listán egyetlen cím sem szerepelhet többször, a végtelen hurkok és a többszörösen megkapott levelek elkerülése végett. A lista előállításakor a szintaktikai ellenőrzés mellett a helyi címek ellenőrzése és az alias-ok feloldása is megtörténik. A host-nevek és az egyéb címek ellenőrzése csak az elküldéskor történik meg.
2.
Az üzenet beolvasása. Az üzenetnek egy fejléccel kell kezdődnie; ezt a sendmail kielemzi és a memóriában tárolja. A törzs tetszőleges szöveg lehet -- tehát bináris adat nem --; ezt egy átmeneti file-ba teszi. Az üzenetet akkor is beolvassa, ha nem volt érvényes címzett (majd ezután hibajelzéssel visszaküldi).
3.
Az üzenet elküldése. Minden egyes címzetthez az üzenetet átadja a megfelelő mailer-nek; egy címzett host-ra egyszerre küldi el az összes levelet (az egyszerre csak egy címzettet elfogadó mailer-eket megfelelően kezeli). Minden egyes elküldött levél elé odatesz egy egyedi fejlécet. Ezután a mailer státuszát megkapja és ellenőrzi.
4.
Sorbaállítás újbóli elküldésre. Ha a mailer státusza azt jelzi, hogy bár nem tudta elküldeni az üzenetet, később még képes lehet rá, a sendmail félreteszi az üzenetet a mail queue-ba, és később újra megpróbálkozik vele.
5.
Vissza a feladónak. Ha valamilyen hiba jelentkezik, a sendmail visszaküldi a levelet a feladónak: a helyzettől függően visszapostázza, vagy (pl. lokális levél esetén) a $HOME/dead.letter file-ba írja.
Az üzenettovábbítás folyamatának megtervezésekor az volt a fő szempont, hogy minden egyes elküldött üzenet megbízhatóan eljusson a címzetthez, vagy ha ez nem lehetséges, valaki mindig értesüljön róla, tehát egyetlen üzenet se tűnjön el nyomtalanul.


next up previous contents
Next: A Sendmail üzembe állítása Up: Sendmail telepítése és beállítása Previous: Tartalom   Tartalom
Hamori Andras
1999-03-21