Sendmail

Allikas: Kuutõrvaja

Sissejuhatus

Sendmail on Eric Allman'i initsiatiivil arendatav klassikaline interneti postivahetusprogramm, mida saab vabalt kopeerida aadressilt http://www.sendmail.org/. Aja jooksul on Sendmailis avastatud ja parandatud olulisi vigu, mis on muuseas seletatav ka sellega, et Sendmail leiab äärmiselt ulatuslikku kasutust.

Võrreldes teiste postivahtetusprogrammidega on Sendmaili olnud kuni viimase ajani suhteliselt keeruline seadistada. Seevastu võimaldab Sendmail aga ka täpsemini seadistusi määratleda ning pakub selliseid võimalusi, mida teiste programmidega kasutada ei saa. Iseasi kas Sendmaili täis-võimsust alati praktiliselt tarvis on.

Kuna Sendmail on üks populaarsemaid postivahetusprogramme, siis võib kasutaja olla küllaltki kindel, et ilmnenud vead kiiresti ära parandatakse. Sendmailil on olemas ka kommerts-tugi, mille kohta leidub infot aadressil http://www.sendmail.com/.

Postisüsteem

Epostisüsteem võimaldab erinevate süsteemide kasutajatel võrgus omavahel kirju vahetada. Süsteem koosneb järgmistest komponentidest

   * kasutaja postiprogramm (ingl. k. MUA - Mail User Agent) - programm, mida kasutaja eposti vahetamiseks tarvitab, näiteks Pine, Elm, Mutt, Eudora
   * postivahetusprogramm (ingl. k. MTA - Mail Transfer Agent) - postiserveri programm, mis saabab ja võtab vastu teistelt postiserveritelt eposti, näiteks Sendmail
   * postijaotusprogramm (ingl. k. MDA - Mail Delivery Agent) - programm, mis kasutajale saabunud posti kopeerib kasutaja postkasti, näiteks Procmail 

Üldiselt töötab epostisüsteem sarnase skeemi alusel

 kasutaja
 postkast    

    |
    |
    |
    v         _____     kohalikud
  _____      |     |     kirjad                   kohalike  
 |     |     |     | -----------------> MDA --->  kasutajate
 | MUA |-->--| MTA |                              postkastid
 |     |     |     |           kirjad välja
 |_____|     |     | <----------------------> ( INTERNET )
             |_____|   kirjad sisse
                ^
                |
                v
           _____|_____
          |           |
          |   saba    |
          |___________|
   * kasutaja saadab kirja teisele kohalikule kasutajale - MUA annab kirja üle MTA'le, mis teeb aadressi järgi kindlaks, et kiri on kohalik ning kiri antakse üle MDA'le. MDA kopeerib kirja vastava kohalik kasutaja kirjakasti.
   * kasutaja saadab kirja välja - MUA annab kirja üle MTA'le, mis teeb kirja aadressi järgi kindlaks millisele võrgus paiknevale teisele postiserverile kiri saata ning teeb seda.
   * kiri tuleb väljas sisse - MTA'ga võtab mõni võrgus paiknev teine postiserver ühendust ning püüab kirja üle anda. Kui kohalik MTA tunnistab kirja omaks, siis võtab ta kirja vastu ning annab selle üle MDA'le mis kopeerib kirja vastava kasutaja postikasti. Kasutajate postkastidele vastavad kasutajanimelised failid, näiteks kataloogis /var/mail
   * kasutaja loeb tulnud kirju - MUA avab kasutaja postikasti ning võimaldab lugeda sinna kopeeritud posti.
   * saba (ingl. k. queue) - kataloog, kus hoitakse neid kirju, mida ei saa mingil põhjusel kohe ära saata, tavaliselt /var/spool/mqueue 

Tarkvara

Tänu Sendmaili suurele populaarsusele on mitmete operatsioonisüsteemide haldajad ta spetsiaalselt kohandanud kasutamiseks oma süsteemiga.

Asudes Sendmaili kasutama tuleks esmalt veenduda, milline versioon programmist on teie süsteemi paigaldatud. Seejärel külastage Sendmaili veebikohta http://www.sendmail.org/ ning veenduge, et teie süsteemi paigaldatud versioonis poleks olulisi turvaauke. Vajadusel kasutage operatsioonisüsteemi paketihaldusvahendeid ning värskendage oma süsteemi Sendmail viimase haldajate poolt ettevalmistatud parandusega. Käesoleval hetkel, august 2001 on viimane stabiilne versioon 8.11.6.

Kui te ei saa paketihaldusvahendeid kasutada kuna näiteks teie operatsioonisüsteemi haldajad pole Sendmailis avastatud vigu parandanud, siis tuleks kopeerida Sendmaili veebikohast viimase stabiilse versiooni lähtetekstid, nendest ise tarkvara kompileerida ning asuda seda kasutama.

Teadaolevalt ebaturvalist Sendmaili ei tohiks avalikus võrgus töötavas arvutis kasutada, kuna sellest võib tekkida ennustamatut kahju.

Kui sobivad seadistusfailid on olemas, siis Sendmaili käivitamine toimub selliselt

bash# sendmail -bd

kus võti -bd näitab, et programm käivitatakse deemonina. Tavaliselt on operatsioonisüsteemid nii seatud, et kui Sendmail on paigaldatud, siis püütakse ta arvuti algkäivitamiselt tööle panna.

Sendmail logib Syslogi abil oma toimetamisi, tavaliselt kataloogis /var/log asuvasse iseloomuliku nimega logifaili. Näiteks normaalsele käivitumisele vastab selline teade eeldusel, et logitakse faili /var/log/maillog

bash# tail /var/log/maillog | fgrep sendmail Aug 24 09:33:36 mall sendmail[215]: starting daemon (8.11.6): SMTP+queueing@00:30:00

Kui Sendmaili põhiseadistusfaili sendmail.cf muuta, siis tuleb Sendmail taaskäivitada.

Seadistusfailid

Sendmaili tööd kontrollivad kataloogis /etc/mail või /etc asuvad seadistusfailid. Põhiseadistusfailist sendmail.cf saab viidata teistele seadistusfailidele või andmebaasidele. Seesugune asjakorraldus võimaldab teha postiserveri konfiguratsiooni muutusi paindlikumalt ja ilma põhiseadistusfaili puutumata.

Operatsioonisüsteemiga kaasatulev põhiseadistusfail sobib kasutamiseks küllaltki erinevatel juhtudel eeldusel, et te koostate sobivad muud seadistusfailid ning andmebaasid. Soovides näha millistele failidele põhiseadistusfailist viidatakse andke korraldus

bash# egrep "/etc" sendmail.cf | egrep -v "^#"
Fw-o /etc/mail/local-host-names
FR-o /etc/mail/relay-domains
Kaccess hash -o /etc/mail/access
Kmailertable hash -o /etc/mail/mailertable
Kvirtuser hash -o /etc/mail/virtusertable
O AliasFile=/etc/mail/aliases
O HelpFile=/etc/mail/helpfile

Failid mille nime ees on '-o' ei pruugi teie süsteemis tingimata olla. Failinimed, mille ees on 'hash' viitavad andmebaasidele ning nad peavad failisüsteemis kandma konfiguratsioonifailis näidatud nimesid, mille lõppu on lisatud .db, näiteks aliases.db.

Sellised andmebaasid moodustatakse vastavatest tekstifailidest spetsiaalse programmiga või käsuga makemap, mille kasutamist selgitatakse allpool.

Andmebaasid on tavaliselt DB (Berkley Database) formaadis failid, mis genereeritakse vastavatest tekstifailidest.

Postimasina seadistamine

Sendmail on vaikimisi seadistatud selliselt, et kasutaja saab posti välja saata ning vastu võtta masinanimelisele domeenile so näiteks aadressile priit@vant.loomaaed.ee tulnud kirju.

Üldiselt tavatsetakse kasutada postidomeeninimena asutusele omistatud domeeninime, antud juhul loomaaed.ee ning epostiaadressiks oleks sel juhul priit@loomaaed.ee. Sel juhul jõuab väljast saadetud post kohale, kui nimesüsteemis loomaaed.ee MX kirje näitab postimasina vant.loomaaed.ee peale.

Selleks lisage oma domeeni tsoonifaili selline rida

loomaaed.ee  1D IN MX 10 vant.loomaaed.ee

Teisisõnu, posti saatmisel püütakse leida nimesüsteemist esmalt domeenile vastavat MX-kirjet ja kui see puudub, siis A-kirjet.

Selleks, et postimasin tunnistaks saabunud kirjad omaks on korrektne lisada postimasina local-host-names faili sarnane rida

loomaaed.ee

Skeemil kujutatakse kuidas postimasinad vant.loomaaed.ee. ja cockpit.tac.ee. on ühendatud internetti ja nad saavad omavahel vahetada eposti

vant.loomaaed.ee.
   ___                     
  |   |                     
  |   |                            loomaaed.ee. 1D IN MX 10 vant.loomaaed.ee.
  |___|                      
    |                      
    |          ---     ) 
     \    (              
       \                    )  
      (     INTERNET          )  
        (                 
           (...             ) 
              (    ...,,()()  \
                                 \
                                    \
                                      |
tac.ee. 1D IN MX 10 cockpit.tac.ee.   _|_
                                     |   |
                                     |   |
                                     |___|
                              
                              cockpit.tac.ee.

Eposti liikumine selliselt

   * Kui postimasinast vant.loomaaed.ee.'st saadetakse kiri aadressile mart@tac.ee, siis esmalt teeb postimasina vant.loomaaed.ee postivahetusprogramm nimesüsteemi MX kirje abil kindlaks, et ühendust tuleb pidada postimasinaga cockpit.tac.ee ning kiri saadetakse ära.
   * Kui internetist saadetakse kiri, näiteks masinast cockpit.tac.ee aadressile priit@loomaaed.ee, siis cockpit.tac.ee postimasinas töötav postivahetusprogramm teeb nimesüsteemi MX kirje abil kindlaks, et ühendust tuleb pidada postimasinaga vant.loomaaed.ee ning kiri saadetakse ära. 

Posti edasisuunamine

Posti edasisuunamine leiab aset kohe peale posti masinasse saabumist ja toimub kahes järjestikulises etapis

  1. ülesüsteemne edasisuunamine - failis aliases toodud reeglite järgi saadetakse kiri edasi
  2. kasutaja määratud edasisuunamine - kirja edasisuunamine kasutaja kodukataloogis failis ~/.forward näidatul moel 

Edasisuunamise reeglid esitatakse neis tekstifailides kahes tulbas: vasemas tulbas on kirjas olemasoleva aadressi esimene osa ning paremas, mis kirjaga teha. Kirjaga toimetatakse vastavalt esimesele klappivale reale ning järgmisi võimalikke klappimisi selles failis ei kontrollita.

Kui postiaadressi esimest osa ei leidu edasisuunamisi korraldava faili vasakus tulbas, siis edasisuunamist ei toimu ning kiri kopeeritakse aadressis näidatud kasutaja postikasti.

Mõlemal edasisuunamisel võib olla sihtpunktiks üks järgmistest:

   * kirja saatmine kasutajale või teisele postaadressile
   * kirja saatmine korraga mitmele postiaadressile
   * kirja suunamine failis toodud postiaadressidele
   * kirja suunamine seadmesse või faili
   * kirja suunamine programmi sisendisse 

Samas järjekorras tooduna näiteks

postmaster: priit kaebused: priit,mart@tac.ee list:  :include: /etc/mail/listinimekiri laa: /dev/null uudised: |/usr/local/bin/postnews

Rõhutame, et hea tooni hulka kuulub, et postimasinas oleks kirjeldatud alias postmaster. Aadressile postmaster tulnud post peab olema edasi suunatud aadressile, mis vastab selle postiserveri eest vastutavale isikule.

Ülesüsteemset posti ümbersuunamist korraldavast tekstifailist aliases moodustatakse andmebaas ehk hash käsuga newaliases

bash# newaliases

Tulemusena tekib fail aliases.db. Niisiis, pärast faili aliases sisu muutmist, tuleb anda käsk newaliases. Aliastesse tehtud muudatused kehtestuvad koheselt ja Sendmaili pole tarvis uuesti käivitada. Posti tööleseadmine kohtvõrgus

Serverit, mis on nõus teiste eest või nimel midagi tegema nimetatakse üldiselt vahendusserveriks (ingl. k. proxy). Traditsiooniliselt kõneldakse inglise keeles eposti vahendusserverist mitte kui 'mail proxy' vaid 'mail relay'. Klientide vaatevinklist käsitletuna öeldakse sellise postimasina kohta ka smart host (ingl. k. taibukas postimasin).

Posti vahendusserveri ülesanne on saata oma klientide post nende eest ära.

Skeemil kujutatakse eposti kliente asuvana samas domeenis loomaaed.ee ning nende jaoks toimib smart-host'ina postimasin vant.loomaaed.ee

       ___
      |   |
      |   | vant.loomaaed.ee
      |_ _|
        |
        |   kohtvõrk loomaaed.ee
|---|---|---|------|-----|-----|-------|
    |      _|_    _|_    |    _|_
    |     |   |  |   |  ...  |   |
    |     |___|  |___|       |___|
   _|_    
  |_ _| loomaaia ruuter
    |   
    |
    |          ---     )    /
     \    (              /
       \                    )  
      (     INTERNET          )  
        (                 
           (...             ) 
           (    ...,,()()  \
                                 \
                                    \
                                      |
                                     _|_
                                    |   |
                   cockpit.tac.ee   |   |
                                    |___|
                              

Klient saadab alati oma väljuva posti vahendusserverile ning vahendusserveri ülesanne on hoolitseda selle eest, et post saaks adressaadile ära saadetud.

Enamust postikliente, näiteks Netscape Messenger, OutLook Express ja ja Eudora ongi ainult võimalik kasutada vahendusserveri abil. Neis klientprogrammides on vaja seadistada nn Outgoing Mail Server'iks kohtvõrgu postimasin.

Lisaks tõuseb sellisest asjakorraldusest turvalist kasu, näiteks saab blokeerida kliendi ja avaliku võrgu vahel üle TCP 25 pordi käiva liikluse.

Selleks, et sisevõrgust läkitatud posti klientide eest postimasin vant.loomaaed.ee ära saadaks, tuleb lisada postiserveri vant.loomaaed.ee seadistusfaili relay-domains oma klientide domeeninimi

loomaaed.ee

Peale nende muudatuste tegemist taaskäivitage Sendmail.

Vahendusserveri klient

Programmi Pine vahendusserveri kliendiks seadmisel tuleb näidata seadistustes parameetri smtp-server väärtuseks postimasina nimi.

Sellest, kuidas korraldada kasutajale saabunud posti vastuvõtmine kohtvõrgu arvutis lugege punktist IMAPi kliendi seadistamine.

Turvalisus

Epost ei ole iseenesest turvaline selles mõttes, et postiserverid vahetavad krüptimata andmeid. See aga ei tähenda, et eposti ei saaks turvaliselt kasutada. Kõige levinum moodus on kasutada kirjaosa jaoks avaliku võtme krüpimist näiteks programmi PGP abil. Postiprogramm Pine võimaldab seda automatiseerida filtrite abil, samuti on krüptimist võimalik kasutada programmiga Netscape Messanger.

Postimasina tervikuna muudavad ebaturvaliseks sellised asjaolud

   * postivahetusprogramm peab olema põhimõtteliselt valmis teenindama igasuguseid kliente, kui ei ole piiratud näiteks millistest domeenidest saadetud posti tohib vastu võtta
   * kuna saabunud post tuleb jagada laiali kasutajate postkastidesse, siis peab postijaotusprogramm töötama juurkasutaja õigustes 

Lisage nende domeenide nimed faili access, kust saabunud posti te ei soovi vastu võtta.

Seadistusfailide juures on vaja jälgida, et nende sisu saaks muuta vaid selleks volitatud kasutajad.

SPAM

Spam'iks nimetatakse sellist posti, mille sisuks on soovimatu reklaam.

Kuna spami eest ei ole postimasina ülemal ega kasutajal endal lihtne end 100 % kaitsta, siis pole põhjust aega-ajalt veidrate kirjade saamisel endast välja minna. Tuleks lihtsalt suhtuda mõistvalt, et küllap see käib siis asja juurde ning kiri kustutada. Avatud vahendusserver

Avatud eposti vahendusserverid (ingl. k. open relay) on sellised postimasinad, mis kas kogemata või meelega on seatud tööle nii, et nad on nõus vahendama kõikide klientide eposti interneti teistele postimasinatele.

SPAMi saatjate tegevust lihtsustavad teinekord sellised avatud vahendusserverid. Avatud vahendusserver võimaldab SPAMi saatjal varjata oma identiteeti ning kasutada võõrast ressurssi oma tarvis.

Logi analüüs

Sendmail logib veateated ja info kirjade liikumise kohta Syslogi abil, näiteks faili maillog. Lisaks on programm mailstats, mis näitab summaarseid andmeid.

Detailsemat statistikat võimaldavad teha programmid http://www.reedmedia.net/software/sendmail_stats/ ja http://www.logreport.org/

Varupostiserver

Epostisüsteemis on nähtud ette võimalus iga domeeni jaoks lisaks põhipostiserverile tööle seada üks või enam varupostiserverit. Igale domeeni postimasinale so nii põhi- kui igale varuserverile on vaja näidata nimesüsteemis vastav MX kirje. Näiteks on otsustatud kasutada domeeni tartu.ee. jaoks põhipostiserverit majak.zoo.tartu.ee. ning ühte varupostiserverit vant.loomaaed.ee.

tartu.ee. 1D IN MX 10 majak.zoo.tartu.ee. tartu.ee. 1D IN MX 20 vant.loomaaed.ee.

Põhipostiserveril on prioriteeti näitav arv kõige väiksem.

Kui põhipostiserver peaks ajutiselt rivist välja minema, siis asub järgmise prioriteediga varupostiserver kõnealuse domeeni kasutajatele mõeldud posti vastu võtma. Siiski, seda posti ei salvestata varuserveri kasutajate postkastidesse, vaid sappa (ingl. k. queue). Aegajalt püüab varuserver talle usaldatud posti põhiserverile edasi anda ning kui põhiserver taas töötab, siis see ka õnnestub.

Selleks, et postiserver hakkaks mõne domeeni jaoks tööle varuserverina, peab tema konfiguratsioonis olema näidatud, et ta oleks nõus vastu võtma varundatavale domeenile saabuvaid kirju ja neid oma sabas hoidma. Seadistusfaili relay-domains lisage nende postidomeenide nimed, millele varuserveriks ollaks, näiteks

tartu.ee

Nüüd võetakse vajadusel vastu ja hoitakse sabas domeenile tartu.ee saabunud eposti.

Seades postimasina tööle domeemi varupostimasinaks, peab peab jälgima, et failis local-host-names puuduks selle domeeni nimi. Vastaselt juhul jagatakse varundatava domeeni kirjad varupostiserveri nende kasutajatele postikastidesse, kelle kasutajanimi langeb kokku eposti aadressi esimese osaga.

Veendumaks, et varuserver toimib peatage ivakeseks ajaks põhipostiserver ning saates väljast mõned kirjad domeeni tartu.ee. kasutajatele, peavad nüüd need salvestatama vant.loomaaed.ee. sappa. Kui põhipostiserver käivitada, siis mõne aja pärast saadetakse nad automaatselt ära. Saba

Sendmail hoiab neid kirju, mida mingil põhjusel kohe ei saa ära saata sabas millele vastab tihtipeale kataloog /var/spool/mqueue. Igale kirjale vastab tavaliselt sabas kaks faili.

Saba seisu saab näha käsuga mailq. Kuigi Sendmail hoolitseb ise saba eest, saab anda käsu püüda koheselt sabas olead kirjad ära saata, käsuga

bash# sendmail -q

FreeBSDs smarthosti seadistamine

Võib tekkida juhus, et soovime suunata kõik väljuvad kirjad läbi teatud mailiserveri.

avame faili

/etc/mail/freebsd.mc

ja lisame sinna rea

define(`SMART_HOST', `postimaja.zoo.tartu.ee')

Ning seejäärel loome sendmaili seadistusfaili, käivitame selleks kaustas /etc/mail käsu make

# make
cp freebsd.mc arhiiv.eenet.ee.mc
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 arhiiv.eenet.ee.mc > arhiiv.eenet.ee.cf
cp freebsd.submit.mc arhiiv.eenet.ee.submit.mc
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 arhiiv.eenet.ee.submit.mc > arhiiv.eenet.ee.submit.cf

Seejärel paigaldame

# make install
install -m 444 arhiiv.eenet.ee.cf /etc/mail/sendmail.cf
install -m 444 arhiiv.eenet.ee.submit.cf /etc/mail/submit.cf
# make restart-mta