Sendmail/SMTP levelezes Sendmail forditasa, konfiguralasa Bartok Istvan, bartoki@sch.bme.hu Wed May 24 18:50:35 MET DST 2000 0.72 verzio A kesz fajl ekezetesites es .html-le alakitas utan GPL Copyleft-tel felkerul a www-re. Wed May 24 18:47:59 MET DST 2000 Kozben a 8.8.8-as verziorol sok csunya dolog kiderult, mar nagyon nem szamit biztonsagos verzionak. ----------------------------------------------------------- Kedves olvaso, Minden hozzaszolast szivesen fogadok, foleg a negativ kritikat! Ha valamelyik resze nem ertheto a doksinak, vagy tul sokat irok egy egyszeru dologrol, tul sokat viccelodom vagy tul keveset: ird meg. A stilisztikai gyengeket, helyesirasi hibakat is ird meg. Ha valamit nem jol tudok, es ugy gondolod hogy pontositani tudnad, legy szives ird meg. Peldaul a pelda X.400 es ELLA cimek szintaxisaban nem vagyok egeszen biztos. Ha valamit szeretnel hozzafuzni, vagy valamit hianyolsz, szinten ird meg. Az olyan hozzaszolasokat, amik nyoman komolyabban fejlodott a doksi, megemlitem a 'Thanks to' reszben, nev szerint, ha kered. Ugy egyatalan, minden javaslatot varok, pl. hogy 74 karakter szelesre formazzam-e a szoveget vagy inkabb 78-ra, vagy hogy ne legyen ekezetes, vagy maradjon sima szoveg .html helyett, ilyesmiket. Ez egy work-verzio... eppen a vazlatot bovitem ki osszefuggo szovegge. Akit csak az utolso modositas ota valtozott reszek erdekelnek, mentse el az eredeti fajlt egy masik neven, majd: $ diff regi uj | less ----------------------------------------------------------- Gyakran elofordul, hogy olyan embernek kell megerteni, telepiteni es konfiguralni a Sendmail alapu levelezest, aki azelott nem foglalkozott meg Sendmaillel. A Sendmailhez mindenfele szintu dokumentacio rendelkezesre all, de a levelezes (es igy ezek a dokumentaciok is) szerteagazo dolog, nehez rovid ido alatt a kello attekintest megszerezni, az ember azt sem tudja melyik doksival kezdje, mi az amit fontosabb elolvasnia, es mi az amit felesleges. Marpedig az ido altalaban szorit amikor pl. a spam-relayezes tiltasat kellene beallitani. Az interneten elerheto es a Sendmailhez csomagolt dokumentaciok alapjan egy Unixot latott ember 4-5 nap alatt meg tudja ugy erteni a Sendmailt, hogy 'guru'-nak szamitson, es tudjon hozza egeszen trukkos konfig fajlokat is irni. (altalaban a konfiguralas okozza a legnagyobb problemat). Ez a dokumentum azert keszult, hogy az elobb emlitett Unixot latott embernek minimalis attekintest adjon a Sendmailrol, es utmutatast adjon a dokumentaciok surujeben, hogy nehany ora alatt eljuthasson odaig hogy kicsit ertsen a levelezeshez, es alapszintu konfiguraciokat ossze tudjon rakni. 2 fo reszbol all: egy nagyobb resz, ami vegigvezet a megfelelo lepeseken, es egy kisebb resz, ami otleteket, peldakat tartalmaz. A 8.9.2 verzioju Sendmailrol irok, ami 1998.december 30-an jott ki. Ez volt a doksi irasanak kezdeten a legujabb verzio, es a RELEASE_NOTES szerint tobb apro hibajavitas is van benne az elozo verziokhoz kepest. Azota mar ujabb verziok is kijottek. ------------------------------------------------------------- Egy kis Sendmail tortenelem: Mar a hoskorban is tobb, egymassal nem kompatibilis levelezo rendszer alakult ki, az ismertebbek: SMTP, UUCP, Bitnet, X.400, FidoNet, cc:Mail, vagy a magyar fejlesztesu ELLA. Ezeknek altalaban a mukodesi modja, de meg a cimzese is elter egymastol, peldaul: SMTP: eric@ucbvax.berkeley.edu UUCP: ucbvax!eric X.400: C=hu/ADMD=attmail/PRMD=minga/ORG=meh/S=miniszterelnok ELLA: INTÉZETEK>BME>FOLYSZAB>Eric Allman - igen, ekezetes levelezes es cimtar alapu cimzes volt mar 10 evvel ezelott is. Az Interneten az SMTP alapu levelezes terjedt el, a 80-as evekbol, a BSD Unixokbol szarmazik a mostani Sendmail. Maga az SMTP (Simple Mail Transfer Protocol) allitolag egy nagy havazas szulemenye, amikor az egyik szamitogepes fej 3 napig nem tudott kimenni a hazabol a nagy ho miatt, es kinjaban kitalalta a protokollt, hogy legkozelebb ilyenkor is tudjon kapcsolatot tartani a vilaggal. A kulonbozo levelezorendszerek kozott az atjarast gateway-ekkel biztositjak. Mivel a Berkeley egyetemen is volt egy ilyen gateway, a Sendmail fejlesztese is elsosorban abba az iranyba tolodott el, hogy a levelek fejlecen minel bonyolultabb szovegfeldolgozasi muveleteket lehessen vegezni, lehetoleg a program ujraforditasa nelkul. Ezert alakult ugy, hogy a konfiguracios fajlja olyan bonyolult, gyakorlatilag egyfajta programozasi nyelv. A Sztakiban is talalhato egy gateway, az Internet-SMTP, a kormanyzati X.400, es az akademiai ELLA levelezorendszer kozott. A kormanyzati X.400 rendszerek Europaban altalaban politikai dontes eredmenyei: EU-hatarozat, hogy terjesszek inkabb az europai (ITU) szabvanyokat. A Sendmail fejlesztese a 80-as evek vegen lelassult, akkor tobb fejlesztesi ag is leszakadt rola es fuggetlenul haladt tovabb, ilyenek a kulonbozo Unix-vendorok 5.x verzioi vagy a Sendmail+IDA. Ezek mar nagyon elavultnak szamitanak. Kesobb Eric Allman visszatert a Berkeley egyetemre es folytatta a fejleszteseket, egy nagyobb verzio ugras is volt: 5-osrol 8-asra. Azert eppen 8-ra, mert a BSD team megegyezett abban hogy a 4.4BSD-ben mindegyik rendszerelemnek 8-rol indul majd a verzioszama. Igy lett a bind - a DNS szerver - is 8-as. A Unix-vendorok a sajat sendmail-valtozatukat ugyanugy sendmailnek nevezik, de letezik 'A' Sendmail, ami alatt az Eric Allman-fele, szabadon hozzaferheto sendmailt ertjuk. Nehany Unix-vendor mar a 8-as Sendmailekbol szarmaztatott sendmaileket ad a rendszereihez, de az az altalanos velemeny, hogy ezeket is erdemes a Sendmailre lecserelni biztonsagi es hatekonysagi szempontbol. A Sendmail biztonsagat sokan szidjak: az eredeti programnal - akademiai, egyetemi kornyezetben hasznaltak - inkabb a hatekonysagra koncentraltak, nem a biztonsagra, ezert voltak egeszen sulyos hibai. Az utobbi idoben viszont szinte paranoiasan figyelnek a biztonsagra a fejlesztesenel, mar 2 eve van annak, hogy utoljara olyan sulyos biztonsagi problemat talaltak benne hogy minden felhasznalo kenytelen volt ujabb verziora valtani. * (Egy internetre kotott szamitogepnel a jelenlegi szoftverek mellett altalaban evente tobbszor is kell biztonsagi javitasokat elvegezni hasonlo okokbol) (* azota sajnos valtozott a helyzet, a 8.8.8-as verzio egyertelmuen lyukasnak szamit Linuxon, es mas OS-eken is erdemes a 8.9.2-re vagy ujabbra valtani) A Sendmailt gyakorlatilag minden ma hasznalt Unix valtozatra portoltak, a debuggolasa, es a fejlesztese folyamatosan folyik ma is. ----------------------------------------------------------- Az SMTP levelezes szerkezete: +-------+ +-------+ +-------+ +-----+ | | | | | | +-----+ | MUA |-->| MTA |-- ... -->| MTA |-- ... -->| MTA |-->| MUA | +-----+ | | | | | | +-----+ +-------+ +-------+ +-------+ MUA - Mail User Agent MTA - Mail Transfer Agent A felhasznalo a MUA segitsegevel irja meg a levelet. A MUA altalaban szovegszerkesztot es kenyelmi funkciokat: cimtarat, levelgyujto dossziekat, stb. tartalmaz. Ilyen MUA-k a Unix rendszerekben altalaban megtalalhato mail, pine, mutt programok, Windows kornyezetben a Netscape Messenger vagy a M$ Outlook. A MUA a megirt levelet atadja az MTA-nak, aki a level tovabbitasarol gondoskodik. Elterjedtebb szabad forrasu Unixos MTA-k: Sendmail, ZMailer, Qmail, Smail. (A nem Unixos vagy nem szabad forrasu MTA-k nem elterjedtek. :) Becslesek szerint az Interneten az MTA-k 80%-a Sendmail. A level tobb MTA-n is keresztulmehet amig eler a cel-MTA-hoz. Ez a relay-ezes. Firewallok moge, vagy csak idoszakos halozati kapcsolattal rendelkezo gepekhez (modemes behivas) csak igy juthat el egy level. A fogado oldali MTA fogadja a levelet, es elhelyezi a felhasznalo postaladajaba, ahonnan a felhasznalo a MUA segitsegevel felveheti es elolvashatja. A level postaladaba valo elhelyezese gyakran elkulonul es MDA-nak (Mail Delivery Agent) nevezik. A Sendmail a Unixos helyi levelezo programnak (altalaban a /bin/mail parancs) adja at a levelet, az teszi a postaladaba (inbox). Sokkal eroforras-igenyesebb egy ilyen megoldas mintha maga a Sendmail irna az inboxba a levelet, de sokkal modularisabb is: mas MDA-t is hasznalhatunk. Azt, hogy egy adott cimre meno levelek melyik gepre erkeznek meg, a DNS-be bejegyzett MX-rekordok (Mail eXchanger) hatarozzak meg: $ host -t MX sch.bme.hu sch.bme.hu mail is handled (pri=30) by nic2.sch.bme.hu sch.bme.hu mail is handled (pri=100) by ns.bme.hu sch.bme.hu mail is handled (pri=10) by balu.sch.bme.hu sch.bme.hu mail is handled (pri=20) by nic.sch.bme.hu $ A @sch.bme.hu -ra kuldott leveleket a legkisebb prioritassal (pri=10) a balu.sch.bme.hu gep kezeli, tehat ha az Internetrol kuldok egy levelet az xvolgy@sch.bme.hu cimre, akkor az a balu.sch.bme.hu gepre probal beesni. Ha az a gep nem elerheto, akkor prioritas szerint a kovetkezo, a nic.sch.bme.hu gepre esik be a level, es o majd megprobalja atadni a balu-nak (rendszeresen megprobalja ujrakuldeni). Ha a nic sem elerheto, akkor a nic2.sch.bme.hu-nak, es ha az sem, akkor az ns.bme.hu gepnek adodik at a level. Ha az sem elerheto, akkor a kuldo MTA felreteszi, es idonkent megprobalja ujrakuldeni. Az MX-bejegyzesekkel oldhato meg, hogy olyan cimre is tudjunk levelet kuldeni, amilyen nevu gep nem is letezik: az sch.bme.hu is egy domain neve, nem egy gepe. ----------------------------------------------------------- Unix/Sendmail levelezes felhasznaloi szemmel: A legegyszerubb MUA a Unixos mail parancs. A mai felhasznalok ugyan kenyelmesebb (esetleg grafikus) kezeloi felulethez szoktak, de ez az egyszeru parancs nagyon jol hasznalhato shell scriptekben: nic:~$ echo '2 5 * * * ps axuw | mail cell' >ct nic:~$ crontab ct - Es matol kezdve Cell minden nap 5:02-kor megkapja az eppen futo processzek listajat. (SystemV alapu rendszerekben 'ps -ef' adja ugyanezt) A Sendmail, mielott a postaladaba kezbesitene a levelet, megnezi, hogy van-e a felhasznalo $HOME alkonyvtaraban .forward nevu fajl, ha van, akkor arra a cimre iranyitja at a levelet ami a .forward -ba van irva. Ha tobb e-mail cimunk is van, a leveleket arra a cimre iranyithatjuk, ahol a leggyakrabban olvassuk oket. Ha a .forward fajlba tobb cimet irunk, akkor egy egyszeru levelezesi lista keletkezik: az oda erkezo leveleket mindegyik cimzett megkapja. Ha szeretnenk egy masolatot a .forward-hoz hasonlo kibontasoktol megvedeni, akkor \cim alakban kell hivatkozni ra. Peldaul ha a netadmin@nic.sch.bme.hu .forward-ja igy nez ki: netadmin@nic:~$ cat .forward cell@sch.bme.hu bartoki@sch.bme.hu \netadmin netadmin@nic:~$ akkor a netadmin@nic.sch.bme.hu cimre kuldott levelek a megadott 2 cimre tovabbitodnak, es a netadmin inboxaba is. Batran hasznalhatjuk ezt ad-hoc levelezesi listak osszeallitasahoz: a Sendmail ilyenkor nem adja fel ujra a levelet, csak atiranyitja, a hibauzenetek az eredeti feladonak fognak visszapattanni es nem a listara. Nem csak egy .forward fajl lehet: gyakran elofordul hogy tobb Unixos gepnek kozos a felhasznaloi adatbazisa, a felhasznalo ilyenkor altalaban mindegyik gepen ugyanazt a $HOME-jat latja. A ket gepre beeso leveleket egymastol fuggetlenul is lehet atiranyitani, a Sendmail eloszor a .forward. fajlt nezi meg, ha az nincs, akkor probalkozik a .forward -dal. Tehat kulon iranyitja a levelet a .forward.balu es a .forward.nic . A level cimzettjeben atadhato egy kis egyeb informacio is, pl. boat@elte.hu helyett boat+laza@elte.hu cimre is lehet irni a levelet. A level ugyanugy megerkezik a cimzettnek, de a + a legujabb Sendmailekben felhasznalhato .forward fajlok megkulonboztetesere: a boat+laza cimre kuldott, a caesar.elte.hu gepre megerkezo levelre ilyen sorrendben ellenorzi a .forward fajlokat: .forward.caesar+laza .forward+laza .forward.caesar .forward A kicsit regebbi Sendmailek (pl. 8.8.8) is beallithatoak igy, de a 8.9.2-nel mar ez az alapbeallitas. Ha | karakterrel kezdodik a .forward -ban levo cim, akkor az utana irt sor programkent indul el, es a standard inputjara megy a level. Ha / karakterrel kezdodik a cim, akkor egy olyan nevu fajl vegere fuzi a Sendmail a levelet: balu:~$ cat .forward+laza |/home/bartoki/bin/mail2html -d /home/bartoki/public_html/laza /home/bartoki/mail/laza balu:~$ Meg bonyolultabb szureseket lehet vegezni a procmail programmal. A procmail nem a Sendmail resze, de szinten szabadon hozzaferheto programcsomag. Gyakran a .forward fajlbol szoktak meghivni a fentebbi modon programkent, de hasznalhatjuk a procmailt MDA-nak is. ----------------------------------------------------------- Unix/SMTP levelezes rendszergazdai szemmel: [ezek a dolgok altalaban ervenyesek az SMTP MTA-kra, nem csak a Sendmailre] A Sendmail MTA az smtp porton (25-os TCP port) varja, hogy egy masik MTA vagy egy MUA felvegye vele a kapcsolatot. A rendszergazdaknak nincs szukseguk MUA-ra, ehelyett beszelik az SMTP-t: [TODO: ezt jo lenne olyan formaban irni, hogy el lehessen valasztani hogy mit gepel a user es mit ir a gep.] A telnet paranccsal felvesszuk a kapcsolatot a nic 25-os portjan varakozo Sendmaillel, aki '220' kezdetu uzenettel jelzi, hogy kesz fogadni a leveleinket: galaxy:~$ telnet nic.sch.bme.hu 25 Trying 152.66.148.1... Connected to nic.sch.bme.hu. Escape character is '^]'. 220 nic.sch.bme.hu ESMTP Sendmail 8.8.8/8.8.8; Wed, 6 Jan 1999 22:25:15 +0100 (MET); How do you do? Bejelentkezunk: megmondom melyik gep vagyok: HELO galaxy.sch.bme.hu 250 nic.sch.bme.hu Hello bartoki@galaxy.sch.bme.hu [152.66.150.93], pleased to meet you A Sendmail valaszuzeneteiben mindig csak a sor eleji 3-jegyu szam a lenyeges, az a tenyleges valasz. A programok az egymas kozotti kommunikacioban csak ezt hasznaljak, a tobbi csak tajekoztato jellegu szoveg a meresz telnetes probalkozoknak. A level boriteka, megmondom ki adta fel a levelet, es ki a cimzett (tobb cimzett is lehet, mindegyiket kulon 'RCPT TO:' sorban adhatjuk meg): MAIL FROM: 250 ... Sender ok RCPT TO: 250 ... Recipient ok A level tartalma: a level fejlece (header), egy ures sor, majd a level torzse (body). A level veget egy olyan sor jelzi, ami csak egy '.'-bol all: DATA 354 Enter mail, end with "." on a line by itself From: To: Ford Fairlane Subject: A zongora Nem kell ugy a lovak koze csapni! . 250 WAA06007 Message accepted for delivery quit 221 nic.sch.bme.hu closing connection Connection closed by foreign host. galaxy:~$ A '250 ' kezdetu valasz sor jelzi a 'minden rendben'-t. Lathatjuk, hogy a level fejleceben is megismeteltuk a cimzettet es a feladot. Ez nem veletlen, a ket-ket cim kulonbozhet egymastol: A boritekon jelzett cimek az MTA-knak szolnak, a level fejleceben levok a MUA-nak. Ha nem letezik a cimzett, akkor a level vagy a hibauzenet a boritekon jelzett feladohoz ter vissza, es az sem biztos hogy a cimzettet szeretnenk lattatni a level To: mezejeben amikor a MUA megjeleniti. Vagy, ha peldaul keresztg@sch.bme.hu ir egy levelet a kszk@sch.bme.hu levelezesi listara, akkor a lista a levelet akar ujra is feladhatja: (a listproc levlistakezelo peldaul igy csinalja) MAIL FROM: RCPT TO: RCPT TO: ... a cimzettek RCPT TO: DATA From: keresztg@sch.bme.hu To: kszk@sch.bme.hu Igy ha egy nem letezo cim szerepel a cimlistaban, akkor a hibarol szolo jelentes a lista karbantartojanak fog menni, nincs ertelme hogy KeresztG-nek menjen egy ilyen hibauzenet hiszen az o levele eljutott a listaig, a lista kibontasa utan volt a hiba. A level cimzettei a To: kszk@sch.bme.hu cimet latjak cimzettkent a MUA-ban, es nem a sajat cimuket. Ezek tehat az 'envelope sender/recipient' illetve a 'header sender/recipient' neven ismert fogalmak. A level tovabbitasa soran az MTA-k postabelyegzovel latjak el a levelet, hogy kovetheto legyen hogy mikor merre jart a level. Ezek a sorok altalaban hosszuak, ezert a szabvany megengedi hogy tobb sorra torjuk a fejlec sorait, ilyenkor a kovetkezo sor vagy karakterrel kezdodik. Received: from listserv.iif.hu (listserv.iif.hu [193.225.12.34]) by nic.sch.bme.hu (8.8.8/8.8.8) with ESMTP id WAA24908; Tue, 6 Oct 1998 22:34:11 +0200 (MET DST) Received: from listserv (193.225.12.34) by listserv.iif.hu (LSMTP Lite for Windows NT v1.1a) with SMTP id <0.66E0D770@listserv.iif.hu>; Tue, 6 Oct 1998 22:33:55 +0200 Received: from NETSPACE.ORG by NETSPACE.ORG (LISTSERV-TCP/IP release 1.8c) with spool id 3697359 for BUGTRAQ@NETSPACE.ORG; Tue, 6 Oct 1998 16:25:38 -0400 Approved-By: aleph1@DFW.NET Received: from zeus.bresnan.net (zeus.bresnan.net [206.25.127.39]) by netspace.org (8.8.7/8.8.7) with ESMTP id FAA18701 for ; Tue, 6 Oct 1998 05:27:10 -0400 Received: from cslserver.csl.mtu.edu ([208.154.20.129]) by zeus.bresnan.net (Netscape Mail Server v2.0) with ESMTP id AAA4531 for ; Tue, 6 Oct 1998 05:28:19 -0400 Sender: Bugtraq List From: Mike Baker To: BUGTRAQ@NETSPACE.ORG A legalso 'Received:' sor kerult ra eloszor a levelre, a tovabbito MTA-k mindig a tobbi sor ele illesztik az ujabb belyegzoket. Ebben a legelso belyegzoben a zeus.bresnan.net nevu gep jelenti, hogy egy sajat magat cslserver.csl.mtu.edu -nak mondo geptol fogadott levelet. A gep HELO-ban mondta magarol hogy o a cslserver.csl.mtu.edu (a zarojel elott), de a valosagban nem tudta kideriteni a reverse DNS-bol a nevet, ezert a zarojelen beluli reszre csak az IP-cimet naplozta: 208.154.20.129. A zeus.bresnan.net gepen Netscape Mail Server v2.0 MTA fut, ESMTP protokollal kapta a levelet (az ESMTP az SMTP bovitett valtozata, minden modern MTA beszeli), es a sajat rendszeren belul a AAA4531 egyedi azonositot adta neki. A level a BUGTRAQ@netspace.org cimre megy, es a megadott datum a fogadas ideje a szabvanyos formatumban. A -0400 az idozonat jelenti a GMT-hez kepest. A tobbi 'Received:' sor is hasonloan ertelmezheto. [TODO: Approved-By:] [TODO: tovabbi header sorok: Precedence: Subject: X-satobbi] Az SMTP protokoll es az e-mail szerkezetenek pontos szabvanya a 821 es a 822-es RFC-k, azokban ennel teljesebb leiras talalhato. ----------------------------------------------------------- A Sendmail hasznalata: A sendmailt altalaban ugy hasznaljuk, hogy: o 'daemon' modban fut: a 25-os porton varja a beerkezo leveleket, amiket megprobal helyben kezbesiteni, illetve tovabbitani a halozaton. Ha nem elerheto a celallomas, vagy nem sikerul neki, a levelet a varakozasi sorba (queue) teszi. Idonkent - pl. fel orankent - fork()-ol magabol egy gyermek processzt, aki megprobalja a queue-ban levo leveleket ujra kuldeni. o ha a 25-os porton varakozo processzel kivulrol TCP kapcsolatot kezdemenyezunk, szinten levalik egy gyermekprocessz, aki fogadja a levelet, majd megprobalja kezbesiteni. Az eredeti processz kozben a 25-os porton tovabb varja az ujabb kapcsolatokat. o ha a kuldo MUA levelet szeretne atadni a sendmailnek, programkent meghivja, parameterkent atadja a cimzett(ek)et, es a standard inputjara beirja a levelet ugyanugy, mintha a paranccsorbol kiadnam: balu:~$ /usr/lib/sendmail iak98@nimrud.eet.bme.hu From: bartoki@sch.bme.hu To: iak98@nimrud.eet.bme.hu Subject: jegyzet Sziasztok, A Kovacs Eva -fele orai jegyzet 10 darab fenymasolt peldanya nalam kaphato igen kedvezmenyes, darabonkenti 1000 Forintos aron. A jegyzetnek kizarolagos resellere vagyok, azaz ne is probalkozzatok nala, az uzleti szerzodesunk ertelmeben senki masnak nem fogja odaadni lemasolni. udv, -- Bartok Istvan managga, 06-60-4678123 . balu:~$ A sendmail a '.' utan megprobalja elkuldeni a levelet, ha a celgep nem elerheto, akkor a queue-ba teszi. Hogy ehhez legyen megfelelo jogosultsaga, altalaban setuid root-kent installaljak a sendmailt. A kovetkezo queue-futaskor a fork-olt gyermek processz ezzel az uj levellel is foglalkozik majd. Ennel a modszernel a boritekot a sendmail generalja. o a kuldo MUA kuldheti ugy is a levelet, hogy rakapcsolodik a 25-os portra, es SMTP-ben beszeli meg a sendmaillel a levelet. A windozos MUA-k altalaban igy kapcsolodnak a szerveren futo Sendmailhez, ez az 'SMTP kiszolgalo'. Ilyenkor ertelemszeruen a MUA generalja a boritekot amikor atadja a levelet. ----------------------------------------------------------- A Sendmailhez tartozo fontosabb fajlok: A Sendmail igyekszik kovetni a gyartok szokasait, minden platformra ugy installalja magat, hogy ugyanott legyenek a fajljai, ahol a gyarto sajatja lenne. Ez azert lassan valtozoban van: a 8.10 sendmailtol kezdve a leheto legtobb konfiguracios fajl az /etc/mail/ alkonyvtar ala kerul. Elkepzelheto, hogy valamelyik fajl nem egeszen ott talalhato az adott rendszeren mint ahol en irom, /etc/ helyett gyakran az /etc/mail/ alatt talaljuk oket, vagy forditva. Neha az /usr/ alatt kell keresgelni. Vigyazni kell ha a Unix-gyartotol szarmazo patcheket teszunk fel a gepre, ha a javitasban szerepel egy uj sendmail (a gyartoe), felulirhatja a mienket, vagy annak a fajljait. /usr/sbin/sendmail - maga a Sendmail futtathato binaris. Az sbin alkonyvtar BSD hagyomany, nehany Unix-vendor a sajat sendmailjet mashova teszi: Digital Unix 4.0 (regebbi neven OSF1): /usr/adm/sendmail/sendmail Solaris 2.6: /usr/lib/sendmail /etc/sendmail.cf - a Sendmail fo konfiguracios fajlja. A tobbi fajl helye altalaban innen allithato. Ebben a Sendmail ilyen-olyan kapcsoloit allithatjuk, es a levelek feldolgozasa is eleg komolyan befolyasolhato innen. A formatuma elso ranezesre elvarazsoltnak tunik, ugy lett meghatarozva hogy konnyu legyen ertelmezni, es egy kovetkezteto-gephez hasonloan programozni is lehessen benne. /etc/aliases - a Sendmail, mielott atadna az MDA-nak a helyben kezbesitendo leveleket, megnezi az aliases-ben, hogy nem kell-e megis mas cimre iranyitani a levelet. Ilyen aliasok eseten: abuse: root root: \root,bartoki az abuse cimre irt leveleket a rootnak iranyitja at, es a root leveleit a root es bartoki is megkapja. Hasonloan a .forward-hoz, itt is hasznalhatjuk a |, /, es \ megoldasokat programba vagy fajlba torteno kezbesiteshez, illetve a tovabbi kibontastol valo levedeshez. Ha nem vedjuk le \ -sel, akkor ezutan meg a .forward kibontasa is megtortenik. Van 2 alias, aminek leteznie kell: a MAILER-DAEMON es a postmaster. Ilyen nevu felhasznalok altalaban nem leteznek a gepen, erkezhetnek nekik levelek: a Sendmail a levelben kuldott uzeneteit a boritekon MAILER-DAEMON feladoval kuldi, azert kell letezzen ilyen alias, hogy egy ilyen uzenetre erkezo valasznak legyen hova megerkeznie. A postmaster cimre a levelezessel kapcsolatos hibauzenetek, es felhasznaloi kerdesek tartoznak. Illik elolvasni legalabb nehany naponta. Ha van kulon postmaster felhasznalo, akkor a postmaster-t termeszetesen nem kell aliasolni. MAILER-DAEMON: postmaster postmaster: Keszithetunk ilyen aliasokat is: Bartok.Istvan: bartoki Igy a Bartok.Istvan@sch.bme.hu cimen is elerhetoek leszunk, ami ugyan jol nez ki, de amikor ket ugyanolyan nevu felhasznalo kerul a rendszerbe, nehez lesz majd eldonteni, hogy ki kapja a "megtisztelo" Kovacs.2.Janos nevet. A sendmail nem kozvetlenul az aliases fajl alapjan dolgozik, annak egy binaris valtozatat hasznalja, amiben igy a kereses gyorsabb. Ha modositjuk az aliases fajlt, utana le kell futtatni a 'newaliases' parancsot, ami elkesziti a binaris adatbazist. Az alias valtoztatasok csak ekkortol elnek! A newaliases vagy egy aliases.pag es aliases.dir fajl parost keszit, vagy egy aliases.db -t. Hogy melyiket, az a forditaskor hasznalt adatbazis konyvtartol fugg. Tobb alias fajlt is hasznalhatunk, a konfiguracios fajlban lehet megadni a neveiket. /var/spool/mail/ (SUN Solarison: /var/mail/) - a felhasznalok postaladaja. Nem kozvetlenul a Sendmail ir bele, az MDA-n kereszul teszi bele a levelet. A formatuma a klasszikus Unix mailbox formatum: From allinphos-owner@sch.bme.hu Tue Sep 29 12:16:19 1998 Return-Path: Received: from (listadm@localhost [127.0.0.1]) by nic.sch.bme.hu (8.8.8/8.8.8) with SMTP id MAA28860; Tue, 29 Sep 1998 12:14:54 +0200 (MET DST) Date: Tue, 29 Sep 1998 12:14:54 +0200 (MET DST) Message-Id: Precedence: bulk From: Kardkovacs Zsolt To: Multiple recipients of list Subject: [Beta Labor] Szg.Grafika nagyhazi X-Listprocessor-Version: 6.0c -- ListProcessor by Anastasios Kotsikonas Content-Type: TEXT/PLAIN; charset=US-ASCII Status: RO Sziasztok, A Szg.Grafika nagyhazi leadasi idopontok modosultak: A level elejen levo 'From ' kezdetu sor a levelhatarok elvalasztasara szolgal, ebben a postalada formatumban a levelek egyszeruen egymas utan vannak irva egy fajlban. Ez hasznos a rendszergazda beallitottsagu felhasznaloknak, mert ha egy level valamelyik fejlec sora megserult (tipikusan a Content-Type: a levelezesi listakon valo athaladaskor), akkor hasrautes alapjan szovegszerkesztovel potolhato, hogy a MUA helyesen meg tudja jeleniteni a levelet. Ilyenkor gyorsnak kell lennunk, mert ha a postalada elmentese elott erkezik levelunk, az elvesz. Inkabb a MUA elmentett leveleiben probalkozzunk. A Return-Path: mar a level fejlecehez tartozik, az 'envelope sender'-t teszi bele a Sendmail amikor az MDA-nak adja at a levelet. A fejlec sorai utan egy ures sor kovetkezik, utana a level torzse. Itt nincs '.' a level torzse vegen, a levelnek ott van vege, ahol a kovetkezo level kezdodik. Ha a level torzseben lenne olyan sor, ami 'From ' -mal kezdodik, akkor az '>From ' alakuan kerul bele a levelbe, hogy ne tunjon levelhatarnak. /var/spool/mqueue - a levelek varakozasi sora. Minden levelhez tobb fajl is tartozik. Az elnevezesek generalasa egy adott levelhez: A fajl tipusa 2-betus string, a level id pedig a 'Received:' soroknal mar emlitett rendszeren beluli egyedi azonosito. A qf kezdetu fajlok a levelek fejlecet es a queue-val kapcsolatos informaciokat taroljak: mikor kerult a queue-ba, mi volt a legutolso hiba amiert meg mindig a queue-ban van a level, stb.). A df kezdetu fajlokban a level torzse van. Ha egy sendmail processz eppen foglalkozik egy levellel (most probalja kikuldeni, vagy eppen erkezik a level), akkor nyit egy xf kezdetu fajlt, ezzel jelzi a tobbi sendmailnek hogy az igyanilyen level id-hez tartozo fajlokhoz ne nyuljanak. Ebbe a fajlba folyamatosan jegyzi az aktualis session (kuldes/fogadas) elvegzett parancsait. A queue-ban levo levelek listazasara a mailq parancs szolgal. balu:/var/spool/mqueue# mailq Mail Queue (1 requests) --Q-ID-- --Size-- -----Q-Time----- ------------Sender/Recipient------------ RAA17032- 67 Thu Jan 7 17:20 (Deferred: Connection timed out with maxx.sch.bme.hu.) balu:/var/spool/mqueue# balu:/var/spool/mqueue# cat qfRAA17032 V2 T915726030 K915762438 N30 P2730341 I0/7/40107 MDeferred: Connection timed out with maxx.sch.bme.hu. Fwb $rSMTP $slocalhost $_bartoki@localhost [127.0.0.1] S RPFD: H?P?Return-Path: HReceived: from localhost (bartoki@localhost [127.0.0.1]) by balu.sch.bme.hu (8.9.2/8.9.2) with SMTP id RAA17032 for ; Thu, 7 Jan 1999 17:20:30 +0100 (MET) H?x?Full-Name: Bartok Istvan HDate: Thu, 7 Jan 1999 17:20:29 +0100 (MET) HFrom: Bartok Istvan HX-Sender: bartoki@balu HTo: tusi@maxx.sch.bme.hu HSubject: aramszunet HMessage-ID: HMIME-Version: 1.0 HContent-Type: TEXT/PLAIN; charset=US-ASCII . balu:/var/spool/mqueue# balu:/var/spool/mqueue# cat dfRAA17032 Szia, Meg az aramszunet elott lekapcsoltam a geped, a maxx-ot. -- Bartoki balu:/var/spool/mqueue# A mail queue formatum reszletes leirasa megtalalhato az OP-ban, de erre egyelore meg nincs szuksegunk. A fenti qf fajlt sem kell megertenunk, eleg ha csak annyit latunk hogy level fejlec kezdemenyek es nehany jarulekos informacio van benne. /var/spool/mqueue/.hoststat - a hatekonysag erdekeben a Sendmail a halozat gepeirol eltarolja hogy a geppel kapcsolatos legutobbi tranzakcio milyen eredmennyel vegzodott, es az mikor volt. Ezt a Host Status adatbazist a /var/spool/mqueue/.hoststat alkonyvtar alatt alakitja ki. Ha egy geppel sikertelen a tranzakzio, akkor egy fel oraig arra a gepre nem is probal levelet kuldeni, egyszeruen beteszi a queue-ba. Ha a queue-bol vette a levelet, akkor is visszateszi. Ha kulon-kulon SMTP tranzakciokkal 1000 levelet kuldunk egy elerhetetlen gepre, akkor ezzel 1000 olyan Sendmailt inditunk, akik 2-2 percig probalkoznak a gep eleresevel. (altalaban kb. ennyi ido utan a kernel kijelenti hogy a tulso gep elerhetetlen - ez a 'Connetcion timeout') Ha hasznalunk .hoststat adatbazist, akkor az elso 2 perc letelte utan az az ujabb levelek mar egyenesen a queue-ba mennek, ami lenyegesen gyorsabb (~1 masodperc). A Sendmail alapbeallitasaban ez a lehetoseg ki van kapcsolva, de ha nagy forgalmu a levelezo gep, akkor mindenkeppen erdemes bekapcsolni. A /var/spool/mqueue/.hoststat alkonyvtarat nekunk kell letrehozni, enelkul nem mukodik! Az adatbazis listazasa: a hoststat vagy a 'sendmail -bh' paranccsal. balu:~$ sendmail -bh -------------- Hostname --------------- How long ago ---------Results--------- nic.sch.bme.hu 00:00:16 250 RAA24339 Message acce teto.sch.bme.hu 00:05:15 250 RAA09199 Message acce nic2.sch.bme.hu 04:08:59 Deferred: Connection time sirkan.sch.bme.hu 00:07:42 250 Data received OK. gigant.sch.bme.hu 00:05:13 250 RAA02053 Message acce unicorn.sch.bme.hu 00:16:16 250 RAA15538 Message acce balu:~$ A nic.sch.bme.hu gepre vonatkozo bejegyzes: (nem kell megerteni minden sorat :) balu:/var/spool/mqueue/.hoststat/hu./bme./sch.# cat nic V0 E0 H0 S0 D2.0.0 R250 RAA24339 Message accepted for delivery U915727798 . balu:/var/spool/mqueue/.hoststat/hu./bme./sch.# /etc/mail/relay-domains [TODO: ezt is megformazni] Kb. egy evvel ezelottig az MTA-k alapbeallitasa az volt, hogy barkitol elfogadtak levelet es megprobaltak tovabbitani. Amikor az Internet meg elsosorban akademiai halozat volt, nem lett volna ertelme a korlatozasnak: ugyan ki elne vissza vele, mikor ugyis mindenkinek a kormany fizeti a halozati hozzafereset? Az utobbi idoben a spammerek elnek vissza ezzel: mivel az ismertebb spammerek gepetol sokan mar nem fogadnak el levelet, azok a reklam-leveleiket atadjak barmelyik gepnek aki hajlando veluk kapcsolatot letesiteni, igy az kuldi szet a vilagba. Ezert a Sendmailbe beepitettek a szures lehetoseget, es az ujabb kiadasok (8.9.0-tol kezdve) mar alapbeallitasban nem relayeznek senkinek, azokat a domaineket, akiknek relayezni szeretnenk, kulon fel kell sorolni az /etc/mail/relay-domains fajlban. Itt a relayezes alatt az ertendo, hogy a barkitol elfogadunk ideiglenes tarolasra es tovabbitasra olyan leveleket, amik a megadott domain ala tartozo gep fele tartanak, es a megadott domain osszes gepetol elfogadunk barhova cimzett leveleket, es azokat tovabbitjuk. Egy pelda beallitas: nic:~# cat /etc/mail/relay-domains bme.hu mad.hu rulez.org nic:~# /etc/mail/sendmail.st - a sendmail statisztikakat keszit, hogy hany levelet, hany cimzettnek, es hany kilobajtot forgalmazott. Ez egy binaris fajl, a statisztikat ertheto formaban a mailstats paranccsal nezhetjuk meg. Ha ez a fajl nem letezik, a Sendmail nem fogja magatol letrehozni. /etc/mail/sendmail.cw - elofordul hogy egy gepnek tobb neve is van, vagy nem csak a sajat neven kell fogadnia a leveleket. Peldaul az amiga.sch.bme.hu gepet amiga.rulez.org neven is bejegyeztuk, vagy a balu.sch.bme.hu gepnek el kell fogadnia a @sch.bme.hu cimre jovo leveleket is. Ilyenkor a megfelelo MX bejegyzeseken kivul a sendmailnek kulon meg kell magyarazni azt is, hogy ha ilyen cimre meno level esik be hozza, akkor azt fogadja el sajatjanak. Ha ezt nem tesszuk meg, akkor a 'local config error: Mail loops back to myself' hibauzenetet adja ezekre a levelekre. Ezeket a gep/domain neveket a sendmail.cf-ben adhatjuk meg, de gyakran ugy irjak meg a sendmail.cf-et, hogy ezeket a neveket csak fel kell sorolni egy kulon fajlban, amit altalaban sendmail.cw-nek neveznek. balu:~$ cat /etc/mail/sendmail.cw localhost sch.bme.hu twister.sch.bme.hu qpa.sch.bme.hu balu:~$ /etc/mail/sendmail.pid - a Sendmail, daemon modban inditva ebbe a fajlba irja a process id-jet, es az inditasakor hasznalt paranccsort: balu:~$ cat /etc/mail/sendmail.pid 10504 /usr/lib/sendmail -bd -q15m balu:~$ Ennek a fajlnak a helye szinten rendszerfuggo, de ujraforditassal megvaltoztathato. A default helye: Digital Unix, Linux: /var/run/sendmail.pid SUN Solaris: /etc/mail/sendmail.pid (Szerintem is inkabb a /var/run ala tartozik az ilyesmi..) ----------------------------------------------------------- A Sendmaillel kapcsolatos fontosabb parancsok: A Sendmail elindulaskor olvassa be a konfiguracios fajljait. Ha menet kozben szeretnenk ravenni hogy olvassa ujra oket, a sendmail.pid-ben talalhato pid-u processznek kell egy SIGHUP-ot kuldeni: balu:~# cat /etc/mail/sendmail.pid 10504 /usr/lib/sendmail -bd -q15m balu:~# balu:~# kill -HUP 10504 A Sendmail ettol ujrainditja magat, igy az uj konfiguracio ervenybe lep. Tobb olyan parancs is van, amit ugy is kiadhatunk hogy a sendmailt magikus kapcsolokkal inditjuk, de konnyebben megjegyezheto nevekkel is hivatkozhatunk rajuk ha letrehozunk a sendmailre mutato szimbolikus linkeket: (pl. az /usr/sbin/ -ben: 'ln -s sendmail newaliases') newaliases - az aliases fajl alapjan a binaris adatbazis elkeszitese. Az uj alias-ok innentol kezdve elnek. mailq - a mail queue listazasa: balu:~$ mailq Mail Queue (1 requests) --Q-ID-- --Size-- -----Q-Time----- ------------Sender/Recipient------------ RAA17032- 67 Thu Jan 7 17:20 (Deferred: Connection timed out with maxx.sch.bme.hu.) balu:~$ A listazott parameterek az elso sorban: Q-ID: egyedi azonosito, ezzel hivatkozik a levelre a naplofajlban, illetve a Received: sorokban Size: a level torzsenek merete Q-Time: mikor kerult a queue-ba Sender/Recipient: a felado (envelope sender) A masodik sorban a legutolso ujrakuldesi kiserlet eredmenye. (miert nem sikerult) A kovetkezo sorokban a level cimzettei (envelope recipients). hoststat - a Host Status adatbazis (a /var/spool/mqueue/.hoststat alatt) listazasa. purgestat - erdemes idonkent letorolni a Host Status adatbazist: minden egyes bejegyzes egy-egy kulon fajlt jelent, ez a fajlrendszer tipusatol fuggoen 512-8192 bajt helyet foglal. 10000 bejegyzes hamar ossze tud jonni! A purgestat torli az adatbazist, eleg ha hetente egyszer ejjel lefuttatjuk crontab-bol. mailstats - ez mar nem szimbolikus link, ez egy kulon program. A sendmail.st alapjan megjeleniti a Sendmail statisztikait. Ennek a programnak a forrasa a Sendmail disztribucioban szinten megtalalhato. ----------------------------------------------------------- A Sendmail fontosabb parancssori kapcsoloi: -bd -q30m - ilyen kapcsolokkal inditjuk el altalaban. -bd - daemon mod: hatterbe vonul, es a 25-os porton varja az erkezo leveleket. -q - megprobalja ujrakuldeni a queue-ban talalhato leveleket (1-1 probalkozas. Ez nem daemon mod, itt nem megy backgroundba a sendmail, csak akkor ter vissza, amikor vegigment a queue-n. -q - -nkent megprobalja ujrakuldeni a queue-t. Az ido formatuma: 10m - 10 perc 120m - 120 perc 2h - 2 ora 1d - 1 nap Lathato, hogy a default '-bd -q30m' a daemon modbol es a queue futtatgatasbol all ossze. -qI -qR -qS - a queue-ban talalhato levelek kozul csak azokkal foglalkozik, amelyeknek a megfelelo mezejere raillik a megadott string: balu:~# sendmail -qRamiga.sch.bme.hu megprobalja ujrakuldeni azokat a leveleket, amiknek legalabb az egyik cimzettje az amiga.sch.bme.hu gepen van. balu:~# sendmail -qIRAA17032 csak az fentebb mar emlitett, maxx-ra meno levelet probalja ujrakuldeni. -C/home/bartoki/sendmail.cf.proba - a default /etc/sendmail.cf helyett a /home/bartoki/sendmail.cf.proba fajlt hasznalja konfiguracios fajlkent. Ha gyartunk egy uj konfigot, erdemes eloszor igy, fajdalommentesen kiprobalni. (nem daemon modban). -bt - 'address test mode': cimeket var es kiirja a cimek atalakitgatasanak lepeseit. Debuggolasra, uj konfiguracio kiprobalasara alkalmas. Ha peldaul beirunk egy nem lokalis e-mail cimet, valami ilyesmit kellene latnunk: Itt sem kell minden sort megertenunk, csak azt vegyuk eszre, hogy a cimek belso reprezentaciojaban hogyan valasztodik el a felhasznalo es a domain neve, valamint hogy a 96-os ruleset '.'-ot tett a domain neve utan, ezzel jelezve hogy ez mar egy teljes domain nev, egeszen a domain struktura gyokeretol kezdve) balu:~$ /usr/lib/sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter
> 3,0 eric@berkeley.edu rewrite: ruleset 3 input: eric @ berkeley . edu rewrite: ruleset 96 input: eric < @ berkeley . edu > rewrite: ruleset 96 returns: eric < @ berkeley . edu . > rewrite: ruleset 3 returns: eric < @ berkeley . edu . > rewrite: ruleset 0 input: eric < @ berkeley . edu . > rewrite: ruleset 199 input: eric < @ berkeley . edu . > rewrite: ruleset 199 returns: eric < @ berkeley . edu . > rewrite: ruleset 98 input: eric < @ berkeley . edu . > rewrite: ruleset 98 returns: eric < @ berkeley . edu . > rewrite: ruleset 198 input: eric < @ berkeley . edu . > rewrite: ruleset 95 input: < > eric < @ berkeley . edu . > rewrite: ruleset 95 returns: eric < @ berkeley . edu . > rewrite: ruleset 198 returns: $# esmtp $@ berkeley . edu . $: eric < @ berkeley . edu . > rewrite: ruleset 0 returns: $# esmtp $@ berkeley . edu . $: eric < @ berkeley . edu . > > Meghivjuk a 3-as rulesetet az eric@berkeley.edu cimre, es annak az eredmenyere meghivjuk a 0-s rulesetet. (a ruleset egy szovegfeldolgozast vegzo fuggveny, amely parameterkent egy sor szoveget kap, es egy sor szoveg a visszateresi erteke is). Egy level cimzettjebol kb. ilyen eljaras utan kell kiderulnie, hogy lokalisan vagy a halozaton keresztul kell-e tovabbitani a levelet. Lathato, hogy a rulesetek egymast hivogatjak, mig a vegen kiderul hogy az esmtp levelezovel, azaz a halozaton keresztul kell tovabbitani a levelet. Egy helyi cim igy bomlik ki: balu:~$ sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter
> 3,0 tusi@balu rewrite: ruleset 3 input: tusi @ balu rewrite: ruleset 96 input: tusi < @ balu > rewrite: ruleset 96 returns: tusi < @ balu . sch . bme . hu . > rewrite: ruleset 3 returns: tusi < @ balu . sch . bme . hu . > rewrite: ruleset 0 input: tusi < @ balu . sch . bme . hu . > rewrite: ruleset 199 input: tusi < @ balu . sch . bme . hu . > rewrite: ruleset 199 returns: tusi < @ balu . sch . bme . hu . > rewrite: ruleset 98 input: tusi < @ balu . sch . bme . hu . > rewrite: ruleset 98 returns: tusi < @ balu . sch . bme . hu . > rewrite: ruleset 198 input: tusi < @ balu . sch . bme . hu . > rewrite: ruleset 198 returns: $# local $: tusi rewrite: ruleset 0 returns: $# local $: tusi > Itt a 96-os ruleset kibontja a balu gepnevet balu.sch.bme.hu. -ra, mert az sch.bme.hu domainben vagyunk. A kibontas vegeredmenye itt a lokalis mailer, az MDA. -O kapcsolo=ertek - a sendmail.cf -ben latott kapcsolok erteket inditaskor felulbiralhatjuk: balu:~# sendmail -q -O QueueDirectory=/var/spool/mqueue.regi_levelek - amikor az 5-os Sendmailunket kicsereljuk uj, 8-as Sendmailre, erdemes a regi mail queue-t atnevezni es a regi sendmaillel kikuldetni belole a leveleket. A mail queue formatuma ugyan keveset valtozott, valoszinuleg a 8-as Sendmail is ki tudna kuldeni a regi leveleket, de biztosabb megoldas az eredetit hasznalni erre. -d - a Sendmail tobb szintu debug rendszerrel rendelkezik: minden resze aprolekos naplozast tartalmaz, az egyes kodreszletek a dolgok fontossaganak megfelelo 'debug level'-lel kuldik el az uzeneteiket, es allithato hogy milyen 'debug level' felettiek keruljenek ki egyatalan a felhasznalo szeme ele: papaya:~ $ sendmail -d21.99 bartoki@sch.bme.hu peldaul tobb oldalnyi aprolekos debug uzenetet ir a kepernyore. Alapbeallitasban a Sendmail a rendszernaploba (syslog) kuld uzeneteket a levelek fogadasa/kuldese/ujrakuldeserol es a kulonleges esemenyekrol. A debug szintekrol es a syslog uzenetek ertelmezeserol reszletesebben az OP ir. -X - a sendmail a teljes forgalmat a megadott fajlba naplozza, szepen kovetheto hogy milyen SMTP parancsokkal beszelget. Vigyazat, ez a naplofajl nagyon gyorsan no! A paranccsori kapcsolok reszletesebb leirasa a man-ban megtalalhato. ----------------------------------------------------------- Egy erdekesebb SMTP parancs: ETRN - hasonlo a -qR parancshoz, de ezt akkor is ki tudjuk adni, ha nem tudunk belepni az adott gepre. Peldaul az amiga.sch.bme.hu gep nehany napja mar ki van kapcsolva, most bekapcsoltuk, es szeretnenk ha az oda varakozo levelek minel hamarabb megjojjenek. Tegyuk fel hogy az MX -bejegyzesunk ezt mutatja: amiga:~$ host amiga amiga.sch.bme.hu has address 152.66.151.149 amiga.sch.bme.hu mail is handled (pri=10) by amiga.sch.bme.hu amiga.sch.bme.hu mail is handled (pri=40) by nic.sch.bme.hu amiga:~$ tehat a leveleink a nic.sch.bme.hu gepen varakoznak. Elinditjuk az ujrakuldesuket: amiga:~$ telnet nic 25 Trying 152.66.148.1... Connected to nic.sch.bme.hu. Escape character is '^]'. 220 nic.sch.bme.hu ESMTP Sendmail 8.8.8/8.8.8; Fri, 8 Jan 1999 13:11:12 +0100 (MET); How do you do? ETRN amiga.sch.bme.hu 250 Queuing for node amiga.sch.bme.hu started QUIT 221 nic.sch.bme.hu closing connection Connection closed by foreign host. amiga:~$ Csak akkor inditsunk ilyet, ha tenyleg szuksegunk van ra: ha sok level van a queue-ban, nagyon eroforras-igenyes tud lenni. Ne is probaljuk ezzel gepeket megfektetni, mert a sendmail naplozza a rendszer naplofajlba a kereseket, es ugyis kiderulne. ----------------------------------------------------------- Sendmail forditasa A Sendmail leforditasahoz C forditora es m4 makro nyelv ertelmezore van szuksegunk. Ezek altalaban minden Unix rendszerben megvannak, ha megsem, akkor be kell szereznunk, ha a gyarto valtozatat nem tudjuk, akkor GNU C fordito es GNU m4 minden elterjedtebb platformra letezik.. Letoltjuk a Sendmailt: Az ftp://ftp.sendmail.org/pub/sendmail/ cimen talalhato a hivatalos Sendmail disztribucio. A Sendmail csomag tomoritve is 1 MB feletti meretu, az ftp.sendmail.org elerese pedig nagyon lassu, erdemes egy mirrort hasznalni, peldaul: ftp://ftp.bme.hu/pub/packages/mail/sendmail/ Altalaban erdemes a legujabb ott ajanlott verziot letolteni, minden ujabb kiadas ujabb hibajavitasokat tartalmaz. A .tar.Z es a .tar.gz kiterjesztesu fajlok kozul csak az egyiket kell letolteni, a .Z compress, a .gz gzip tomoritessel keszult. [TODO: itt tartok, lehet hogy januar vegeig nem sokat tud haladni a doksi: vizsgaidoszak van ugyebar..] - elolvasando doksik - konfiguralas a forditashoz, kulonbozo Unixokon - leforditasa ----------------------------------------------------------- Sendmail konfiguralasa - sendmail.cf generalasa - a formatumrol roviden (nehany alap dolog beallitasa) - az elejen opciok, aztan header cuccok, timeoutok, rulesetek, mailerek - quick-and-dirty - hogyan hasznaljuk a 'generic' .cf-eket (mit kell atirni, stb) - haat, hogy jon ez ide? A kovetkezo fejezetben is irok errol.. ?? mirol? - generalasa m4-gyel (onnan hogy mi is az az m4) - mi az az m4? - miert m4-gyel kell csinalni a konfigot? (mert ilyen bonyolult) - m4 alapok (dnl, meg ugy egyatalan az alapok) - egyszeru peldak - cf/README-bol a fontosabb dolgok (local_procmail, masq, meetoo, ilyesmik) - cf/README-t kell elolvasni - a formatumrol reszletesen (ez itt teljes?? megnezni az op.ps-ben) - Makrok - Class-ok (.cf-ben, fajlokbol) - kulso mappingok, adatbazisok hasznalata (kulso .db fajlok), regularis kifejezesek, DNS - Rule-ok - 'pattern matching' - Ruleset-ek - Fejlec sorok generalasa/modositasa - Mailerek - A levelek utja a sendmailen belul (milyen ruleseteken keresztul) - userdb - genericstable - virtuserdb - lehet hogy ezt a rendszergazda szemenel kellene? - ha van defaultbol is, akkor inkabb ott is emliteni, vagy inkabb a fajloknal - hakkolasok, trukkok ----------------------------------------------------------- Tipikus hibajelensegek, leggyakoribb beallitanivalok: - 8.8.* es 8.9.2 kozotti lenyeges kulonbsegek, amikre vigyazni kell, mert problemakat okozhatnak: - relay tiltas (kikapcsolasa hogyan) - nem letezo domainbol nem fogad el levelet (kikapcsolasa hogyan) - nem teljesen specifikalt envelope felado cimrol nem fogad el levelet: cf/README, accept_unqualified_senders - de ez nem is olyan veszes, ha nem okoz problemat akkor nem irom be. - 'mail loops back to myself' - (ezzel osszefugg): tobb neven is elfogadjon leveleket a gepem - kimeno levelek cimzese hogy ne a gep neve, hanem csak a domain legyen benne (ne @balu.sch.bme.hu, hanem @sch.bme.hu) - smarthost hasznalata - relay host hasznalata - A Jurix nevu Linux-disztribucio ezeket nagyon szepen tudja - Debianban is van valami sendmail configurator ----------------------------------------------------------- Pelda konfigok: - Solaris, online, onallo gep - bonyolultabb peldak - a balu.mc :) - annal kicsit altalanosabbat, a Jurix dolgait is bele kellene tenni. - Linux, dial-up szerver, de a klienseitol mindig fogad - az elmelet: 'expensive' a leveleses, nodns, nocanonify, masquerade_envelope (ez az ugynevezett "csoportos levelezes"), - a gyakorlat - figyelmeztetni hogy ez emlekezetbol megy!! - Default Linux konfig nem kell, mert olyan van barmelyik disztribucioban - vagy lehet hogy megis? Jol lehetne ra epitkezni.. ----------------------------------------------------------- Egyeb, haladobb dolgok, otletek: - local%domain - source routolas - ne felejtsuk el az owner-.. trukkot - C patch a 'Content-Type:' 1-sorossa alakitasahoz - Lotus Notes trukk - From: line - AllowBogusHelo Egyebkent a Sendmail fejlesztoi olyannyira gondoltak a telnetes probalkozokra, hogy meg helpet is implementaltak a protokollba: papaya:~ $ telnet balu 25 Trying 152.66.148.40... Connected to balu.sch.bme.hu. Escape character is '^]'. 220 balu.sch.bme.hu ESMTP Sendmail 8.9.2/8.9.2; Thu, 7 Jan 1999 00:04:42 +0100 (MET); How do you do? HELP 214-This is Sendmail version 8.9.2 214-Topics: 214- HELO EHLO MAIL RCPT DATA 214- RSET NOOP QUIT HELP VRFY 214- EXPN VERB ETRN DSN 214-For more info use "HELP ". 214-To report bugs in the implementation send email to 214- sendmail-bugs@sendmail.org. 214-For local information send email to Postmaster at your site. 214 End of HELP info HELP ETRN 214-ETRN [ | @ | # ] 214- Run the queue for the specified , or 214- all hosts within a given , or a specially-named 214- (implementation-specific). 214 End of HELP info QUIT 221 balu.sch.bme.hu closing connection Connection closed by foreign host. papaya:~ $ ----------------------------------------------------------- Felhasznalt/hasznos olvasnivalo hasznossagi sorrendben (mennyire hasznaltam): (pontosra megcsinalni a hivatkozasokat) OP - Sendmail installation and operation guide cf/README fajl a sendmail.cf generalasarol http://www.mek.iif.hu/porta/szint/muszaki/szamtech/wan/fuzetek/e-mail.hun - egy nagyon jo osszefoglalo az internetes levelezesrol www.sendmail.org - az eredeti sendmail oldal www.sendmail.com - commercial Sendmail Inc. A Jurix/SuSE Linux-disztribucio sendmail.cf generalo scriptje Sendmail Changes file http://www.ora.com/catalog/sendmail2/toc.html - 'A' Sendmail konyv http://www.vix.com/vix/smtap/TOC.html - Egy masik Sendmail konyv http://www.informatik.uni-kiel.de/~ca/email/english.html - Sendmail peldak, otletek rfc821 - SMTP protocol rfc822 - Mail header format ----------------------------------------------------------- TODO: Ha mar 8.9.2 sendmailrol irok, azert jo lenne egy kis utmutato ahhoz, hogy hogy lehet 8.8.8 sendmaillel spam filterezni. habar a doksi alapjan lehet 8.8.8 sendmailt is konfiguralni, csak a hack-eket kell osszeszedni valahonnan. http://unicorn/~kisza/ cimen szetnezni a doksiban szereplo pelda levelek vagy a kepzelet szulemenyei, vagy elmentett leveleim gonoszul modositott vagy kozmetikazott valtozatai. a peldaim elsosorban SUN Solaris, Digital Unix, es Linux kornyezetre ervenyesek, de egy reszuket a leirt formajukban nem probaltam ki, elofordulhatnak hibak.