Erinevus lehekülje "Postfix'i arhitektuuri kirjeldus ja kasutamise keerulisemad võimalused" redaktsioonide vahel

Allikas: Kuutõrvaja
(Ühe domeeni kirjade blokeerimine)
P (pisiparandused)
 
3. rida: 3. rida:
 
===Postfixi arhitektuur===
 
===Postfixi arhitektuur===
  
Postfix on vabavaraline mail transfre agent (MTA), serveritarkvara mis mõeldud
+
Postfix on vabavaraline mail transfer agent (MTA), serveritarkvara mis mõeldud
 
emailide vastuvõtmiseks ning saatmiseks. Postfixi kiirus, kergelt administreeritavus ja turvalisus
 
emailide vastuvõtmiseks ning saatmiseks. Postfixi kiirus, kergelt administreeritavus ja turvalisus
on teinud sellest ühe enimkasutatava mta ja laialdase alternatiivi sendmailile.
+
on teinud sellest ühe enimkasutatava mta ja levinud alternatiivi sendmailile.
  
 
Selle kirjutas hollandlane Wietse Venema ja kasutusse võeti esmakordselt 1999.a.  
 
Selle kirjutas hollandlane Wietse Venema ja kasutusse võeti esmakordselt 1999.a.  
22. rida: 22. rida:
 
Vasakul on loetletud neli erinevat võimalust, kuidas kiri võib jõuda Postfixi töötlemisele
 
Vasakul on loetletud neli erinevat võimalust, kuidas kiri võib jõuda Postfixi töötlemisele
  
Kitsam pilt MTA'st oleks allolev. Tegemist on hea pildiga n2itamaks ,et postfixi näol ei ole tegemist mingi väikese tarkvaraga. Kokku koosneb postfix kuskil 11'nest põhilisest käsurea utiliidist ja 20nest protsessist/deemonist.
+
Kitsam pilt MTA'st oleks allolev. Tegemist on hea pildiga näitamaks, et postfixi näol ei ole tegemist mingi väikese tarkvaraga. Kokku koosneb postfix umbes 11-st põhilisest käsurea utiliidist ja 20-st protsessist/deemonist.
  
 
[[Pilt:Img17.png]]
 
[[Pilt:Img17.png]]
40. rida: 40. rida:
 
Lokaalne meil saadetakse maildropile ja kopeeritakse incoming järjekorda. Incoming
 
Lokaalne meil saadetakse maildropile ja kopeeritakse incoming järjekorda. Incoming
 
järjekord on mailidele mis äsja saabunud ja queue manager pole neid veel ülevaadanud.
 
järjekord on mailidele mis äsja saabunud ja queue manager pole neid veel ülevaadanud.
Mailid mida ei saa edastada tõstetakse defferred järjekorda ,et see ei jääks
+
Mailid mida ei saa edastada tõstetakse deferred järjekorda, et see ei jääks
 
saabuvatele-saadetavatele kirjadele jalgu.
 
saabuvatele-saadetavatele kirjadele jalgu.
  
 
Kui laiemalt vaadata siis ümbritseb postfixi omakorda veel terve pilv mitmesugustest
 
Kui laiemalt vaadata siis ümbritseb postfixi omakorda veel terve pilv mitmesugustest
abitarkvaradest, millega postfix atkiivselt suhtleb nagu spämmitõrje, viirusetõrje jne. Lühidalt oleks
+
abitarkvaradest, millega postfix aktiivselt suhtleb nagu spämmitõrje, viirusetõrje jne. Lühidalt oleks
ühe tänapäevase viirusetõejga varustatud postiserveri skeem järgnev:
+
ühe tänapäevase viirusetõrjega varustatud postiserveri skeem järgnev:
  
 
[[Pilt:Openbsd-postfix.png]]
 
[[Pilt:Openbsd-postfix.png]]
69. rida: 69. rida:
 
* võrgust saabunud kiri - kõnealune Postfix kuulab arvuti võrguseadme port 25/tcp peal ning üle võrgu pöördub nt teine Postfix
 
* võrgust saabunud kiri - kõnealune Postfix kuulab arvuti võrguseadme port 25/tcp peal ning üle võrgu pöördub nt teine Postfix
 
* kohapeal tekitatud edasisuunamine - nt aliaste lahendamisel
 
* kohapeal tekitatud edasisuunamine - nt aliaste lahendamisel
* kohapeal moodustatud teade - Postfix genereerib oma töö käigus teated, nt nn bounce kirju kui kiri võeti küll töötlemisele nt võrgust, aga kirja töötlemisel selgus, et kirja ei õnnestu edasi saata
+
* kohapeal moodustatud teade - Postfix genereerib oma töö käigus teated, nt nn bounce kirju kui kiri võeti küll töötlemisele nt võrgust aga kirja töötlemisel selgus, et kirja ei õnnestu edasi saata
  
 
===Eposti kirja ja kirja edastamise protokollid===
 
===Eposti kirja ja kirja edastamise protokollid===
113. rida: 113. rida:
 
Kõik juurde lisatud andmed on lisatud SMTP protokolli rääkimise alusel, st need kõik väljendavad kirja teekonna erinevatel etappidel kasutatud ümbriku aadresse.
 
Kõik juurde lisatud andmed on lisatud SMTP protokolli rääkimise alusel, st need kõik väljendavad kirja teekonna erinevatel etappidel kasutatud ümbriku aadresse.
  
===Aadressiklassid===
+
===Aadressklassid===
  
Aadressiklasside (ingl. k. address classes) http://www.postfix.org/ADDRESS_CLASS_README.html abil otsustab Postfix milliseid kirju vastu võtta ja kuidas neid edasi toimetada. Addressklass on määratletud kolme tunnuse alusel
+
Aadressklasside (ingl. k. address classes) http://www.postfix.org/ADDRESS_CLASS_README.html abil otsustab Postfix milliseid kirju vastu võtta ja kuidas neid edasi toimetada. Addressklass on määratletud kolme tunnuse alusel
  
 
* klassiga seotud domeenide nimekiri (ingl. k. list of domains that are a member of the class) - nt kõik local_domains, kõik relay_domains
 
* klassiga seotud domeenide nimekiri (ingl. k. list of domains that are a member of the class) - nt kõik local_domains, kõik relay_domains
157. rida: 157. rida:
 
====Ühe domeeni kirjade blokeerimine====
 
====Ühe domeeni kirjade blokeerimine====
  
Näiteks on teemist meil releeserveriga, mis edastab paljude veebiserverite
+
Näiteks on tegemist releeserveriga, mis edastab paljude veebiserverite
 
meili. Või siis ühe hostinguserveri meili, kus on sadu domeene. Üks domeenidest
 
meili. Või siis ühe hostinguserveri meili, kus on sadu domeene. Üks domeenidest
hakkab aga agaralt spammima ja vaja oleks sealt lähtuvad kirjad blokeerida.
+
hakkab aga agaralt spämmima ja vaja oleks sealt lähtuvad kirjad blokeerida.
  
 
Spämmivaks domeeniks on näites hundionu.ee
 
Spämmivaks domeeniks on näites hundionu.ee
170. rida: 170. rida:
 
NB! Järjekord peab kindlasti olema, et permit_mynetworks ja muud lubamised
 
NB! Järjekord peab kindlasti olema, et permit_mynetworks ja muud lubamised
 
tuleksid peale saatja ligipääsu kontrolli. Nimelt osustatakse esimese reegliga
 
tuleksid peale saatja ligipääsu kontrolli. Nimelt osustatakse esimese reegliga
sageli kirja saatus ära ja edasisis reegleid enam ei vaadata.
+
sageli kirja saatus ära ja edasisi reegleid enam ei vaadata.
  
 
Seejärel tekitame access faili
 
Seejärel tekitame access faili
193. rida: 193. rida:
 
  ants@hundionu.ee    REJECT
 
  ants@hundionu.ee    REJECT
  
Ajutiste kiirete piirangute jaoks on see lahendus hea kuid püsiva spamitabeli teemiseks ilmselt liiga tülikas
+
Ajutiste kiirete piirangute jaoks on see lahendus hea kuid püsiva spämmitabeli teemiseks ilmselt liiga tülikas
  
 
====Kirjade ümbersuunamine teise serverisse====
 
====Kirjade ümbersuunamine teise serverisse====
243. rida: 243. rida:
 
  smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
 
  smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
  
See kõik on üldine ja töötab ühtemoodi nii freebsd, solarise kui debiani või kasvõi windowsil (kui postfix sinna
+
See kõik on üldine ja töötab ühtemoodi nii freebsd, solarise kui debiani või kasvõi windowsil (kui postfix sinna kunagi porditakse)
kunagi porditakse)
 
  
Seejärel tuleb muidugi seadistada ka postfixi septsiifilisem osa, mis varieerub erinevatel operatsioonisüsteemidel
+
Seejärel tuleb muidugi seadistada ka postfixi septsiifilisem osa, mis varieerub erinevatel operatsioonisüsteemidel, näiteks kus asub deemon, kus spool kaust või mis õigustes töötab postfix
omasuudu, näiteks kus asub deemon, kus spool kaust või mis õigustes töötab postfix
 
  
 
Kasutada võib ka muutujaid stiilis config_directory = ../postfix
 
Kasutada võib ka muutujaid stiilis config_directory = ../postfix
280. rida: 278. rida:
 
'''mynetworks = 127.0.0.0/8, 192.168.1.0/24'''
 
'''mynetworks = 127.0.0.0/8, 192.168.1.0/24'''
  
IP aadressid või võrkude vahemikud mis on turvalised nimetame localhosti ja serveri taguse kontori sisevõrgu.
+
IP aadressid või võrkude vahemikud mis on turvalised nimetame localhosti ja serveritaguse kontori sisevõrgu.
 
Nendest võrkudest võib saata maile läbi serveri. Kõik katsed saata või relay'da maili teistelt
 
Nendest võrkudest võib saata maile läbi serveri. Kõik katsed saata või relay'da maili teistelt
 
mitte siin defineeritud ip'delt keelatakse
 
mitte siin defineeritud ip'delt keelatakse
291. rida: 289. rida:
 
Siin võib defineerida veel kõik masina küljes olevad domeenid neid komaga eraldadest, kust
 
Siin võib defineerida veel kõik masina küljes olevad domeenid neid komaga eraldadest, kust
 
server peaks emaile vastuvõtma, lihtustamise huvides võib need kõik mydestination faili lisada
 
server peaks emaile vastuvõtma, lihtustamise huvides võib need kõik mydestination faili lisada
ning faili korraga külgevõtta
+
ning faili korraga külge võtta
  
 
  ../etc/mydestination
 
  ../etc/mydestination
321. rida: 319. rida:
 
kuid mitte kõige parem ja tänapäeval oleks
 
kuid mitte kõige parem ja tänapäeval oleks
 
tegelikult juba üsnagi mõttekas kasutada maildir'i home_mailbox = Maildir/
 
tegelikult juba üsnagi mõttekas kasutada maildir'i home_mailbox = Maildir/
võimalik on kogu maili kettale transportimine anda eraldi programmine, näit
+
võimalik on kogu maili kettale transportimine anda eraldi programmina, näit
 
cyrusele mailbox_transport = cyrus
 
cyrusele mailbox_transport = cyrus
  
 
'''smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain'''
 
'''smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain'''
  
Piirangud läbi mailiserveri saatjale, lubame automaatselt mynetworgist saatmised
+
Piirangud läbi mailiserveri saatjale, lubame automaatselt mynetwork'ist saatmised
 
ning keelame tundmatud
 
ning keelame tundmatud
  
350. rida: 348. rida:
  
 
Kõikide muutujate lahtiseletamine ja esiletoomine läheks väga pikaks,
 
Kõikide muutujate lahtiseletamine ja esiletoomine läheks väga pikaks,
nendekohta on üsnagi mahukas ja põhjalik kirjeldus ametlikuls postconf manualis http://www.postfix.org/postconf.5.html aga püüaks veel mõningaid ja põhiliselt spamimise /ddos'imisi piiravaid
+
nendekohta on üsnagi mahukas ja põhjalik kirjeldus ametlikus postconf manualis http://www.postfix.org/postconf.5.html aga püüaks veel mõningaid ja põhiliselt spämmimise/ddos'imisi piiravaid
 
ja töökindlust suurendavaid parameetreid esiletuua
 
ja töökindlust suurendavaid parameetreid esiletuua
  
389. rida: 387. rida:
 
  recipient_delimiter = +
 
  recipient_delimiter = +
  
See teeb võimalikuks saata kirje aadressitele kasutaja+laiend@loomaaed.zoo.ee
+
See teeb võimalikuks saata kirje aadressidele kasutaja+laiend@loomaaed.zoo.ee
  
 
See on hea seepärast, et saaks erinevatesse kohtadesse panna näiliselt erinevad aadressid, samas aliasi defineerimata. Postfix üritab esmalt saata kirja kasutajale 'kasutaja+laiend', kui see ei õnnestu, siis 'kasutaja'.
 
See on hea seepärast, et saaks erinevatesse kohtadesse panna näiliselt erinevad aadressid, samas aliasi defineerimata. Postfix üritab esmalt saata kirja kasutajale 'kasutaja+laiend', kui see ei õnnestu, siis 'kasutaja'.
445. rida: 443. rida:
 
====Spam====
 
====Spam====
  
Aadressil http://spamassassin.apache.org/gtube/ on nö standard spammi, mille nt Spamassassin peaks avastama
+
Aadressil http://spamassassin.apache.org/gtube/ on nö standardspämmi, mille nt Spamassassin peaks avastama
  
 
   XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
 
   XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
  
Katsetamiseks tuleks see järgnevus sisestada kirja eraldi reane reavahetusega lõpus.
+
Katsetamiseks tuleks see järgnevus sisestada kirja eraldi reana, reavahetusega lõpus.
  
 
====Viirus====
 
====Viirus====
505. rida: 503. rida:
  
 
* permit_mynetworks - lubada saata posti nendest alamvõrkudest, milles asub postimasin
 
* permit_mynetworks - lubada saata posti nendest alamvõrkudest, milles asub postimasin
* reject_unauth_destination - keeldutaks töötlemast posti mida ei ole postimasin seadistatud kas vahendama või millele tegema local deliverit
+
* reject_unauth_destination - keeldutakse töötlemast posti mida ei ole postimasin seadistatud kas vahendama või millele tegema local deliverit
  
 
Mõned allikad soovitavad kõik piirangud seadistada ühe smtpd_recipient_restrictions parameetri abil kuna nii on ehk tagatud parem ülevaatlikkus.
 
Mõned allikad soovitavad kõik piirangud seadistada ühe smtpd_recipient_restrictions parameetri abil kuna nii on ehk tagatud parem ülevaatlikkus.
520. rida: 518. rida:
 
   root@arvuti.sisedomee      www-bounce@valisdomeen.ee
 
   root@arvuti.sisedomee      www-bounce@valisdomeen.ee
  
Muudatuste kehtestamiseks tuleb generic'ikile vastav andmebaas moodustada käsuga
+
Muudatuste kehtestamiseks tuleb generic'ile vastav andmebaas moodustada käsuga
  
 
   # postmap /etc/postfix/generic
 
   # postmap /etc/postfix/generic
526. rida: 524. rida:
 
ning laadida reload'iga Postfix.
 
ning laadida reload'iga Postfix.
  
Käskuga postconf estitatakse parasjagu kehtetatud Posfixi seadistused
+
Käsuga postconf testitatakse parasjagu kehtetatud Posfixi seadistusi
  
 
   # postconf
 
   # postconf
  
ning lisades võtme -n esitatakse main.cf failis ilmutatult kasutatud parameetrite väärtused
+
ning lisades võtme -n esitatakse main.cf failis kasutatud parameetrite väärtused
  
 
   # postconf -n
 
   # postconf -n
609. rida: 607. rida:
 
SPF (Sender Policy Framework - ingl. k. epost saatja kontrollimise raamistik) http://www.openspf.org/Project_Overview võimaldab saavutada sellised eesmärke
 
SPF (Sender Policy Framework - ingl. k. epost saatja kontrollimise raamistik) http://www.openspf.org/Project_Overview võimaldab saavutada sellised eesmärke
  
* kaitsta eposti vastuvõtjat ümbriku from aadressi võltsijate eest (eeldusel, et võltsitava domeeninime omanikud oma oma domeenidele kirjeldanud spf või sfp sisuga txt kirjed)
+
* kaitsta eposti vastuvõtjat ümbriku from aadressi võltsijate eest (eeldusel, et võltsitava domeeninime omanikud oma domeenidele kirjeldanud spf (või sfp sisuga txt) -kirjed)
 
* kaitsta domeeninime omanikku ümbriku from aadressi võltsijate tegevuse eest, tulemusena ei saa võltsijad saata kontrollimatult adressaatidele võltsitud eposti
 
* kaitsta domeeninime omanikku ümbriku from aadressi võltsijate tegevuse eest, tulemusena ei saa võltsijad saata kontrollimatult adressaatidele võltsitud eposti
  
623. rida: 621. rida:
  
  
Kui mingil põhjusel on tarvis uurida mõnda parasjagu sabas olevat kirja, siis sobib selleks programm postcat. Tavaliselt saab logist või mailq programmi väljundist teada kirja identifikaatori ning selle abil õnnesub sabast kirjale  vastav fail üles leida.
+
Kui mingil põhjusel on tarvis uurida mõnda parasjagu sabas olevat kirja, siis sobib selleks programm postcat. Tavaliselt saab logist või mailq programmi väljundist teada kirja identifikaatori ning selle abil õnnestub sabast kirjale  vastav fail üles leida.
  
 
   # mailq
 
   # mailq
668. rida: 666. rida:
 
   # postqueue -f
 
   # postqueue -f
  
Peudograafiline mailisaba haldur pfqueue http://pfqueue.sourceforge.net/
+
Pseudograafiline mailisaba haldur pfqueue http://pfqueue.sourceforge.net/
  
 
[[Pilt:Pfqueue.JPG]]
 
[[Pilt:Pfqueue.JPG]]
694. rida: 692. rida:
 
  }"
 
  }"
  
See skript väljastab ühel real mail ID kuupäev saatja ->  saajad. Kui lisada võti '-l' (nagu long), siis paneb kõige lõppu ka Postfixi veateate, mispärast see deferredis istub.
+
See skript väljastab ühel real mail ID kuupäev saatja ->  saajad. Kui lisada võti '-l' (nagu long), siis paneb kõige lõppu ka Postfixi veateate, mispärast see deferred'is istub.
  
 
Nüüd saab näiteks selliseid otsinguid korraldada:
 
Nüüd saab näiteks selliseid otsinguid korraldada:
700. rida: 698. rida:
 
  $ mailq_filter | grep "\.com ->  .*\.com"
 
  $ mailq_filter | grep "\.com ->  .*\.com"
  
Või kirjutada omakorda selliseid konstruktsioone
+
Või kirjutada selliseid konstruktsioone
  
 
  $ mailq_filter | grep mingistring-domeen | awk '{ print $1 }' | postsuper -d -
 
  $ mailq_filter | grep mingistring-domeen | awk '{ print $1 }' | postsuper -d -
722. rida: 720. rida:
 
===Postfixi olulised tööriistad===
 
===Postfixi olulised tööriistad===
  
Oluliseimad posfixi käsud mida sagedaimini igapäevaelus võib vajaminna on
+
Oluliseimad posfixi käsud mida sagedamini igapäevaelus võib vajaminna on
  
 
*postalias - loob aliase andmebaasi
 
*postalias - loob aliase andmebaasi
  
*postcat - võimaldab vaadata järjekorras olevate fialide sisu
+
*postcat - võimaldab vaadata järjekorras olevate failide sisu
  
 
*postmap - loob lookup map'e, suur hulk postfixi konfiguratsiooni informatsiooni hoitakse lookup tabelites.
 
*postmap - loob lookup map'e, suur hulk postfixi konfiguratsiooni informatsiooni hoitakse lookup tabelites.
732. rida: 730. rida:
 
*postconf - postfixi parameetrite/seadistuse vaatamine ja muutmine
 
*postconf - postfixi parameetrite/seadistuse vaatamine ja muutmine
  
konfiguratsiooniooni saab jooksvalt vaadata käsuga
+
konfiguratsiooni saab jooksvalt vaadata käsuga
 
postconf -n
 
postconf -n
  
760. rida: 758. rida:
 
====Imap-uw====
 
====Imap-uw====
  
Vanem ja lihtsam deemon, suudab vaid mbox formaati jagada. Halvasti konfigureeritav ja ebastabiilsem. Suurtesse
+
Vanem ja lihtsam deemon, suudab vaid mbox formaati jagada. Halvasti konfigureeritav ja ebastabiilsem. Suurtesse süsteemidesse ei soovitaks
süsteemidesse ei soovitaks
 
  
 
====Dovecot====
 
====Dovecot====
771. rida: 768. rida:
  
 
maildir++ formaati hästi lugev töökindel imapideemon, mboxi ei toeta, võimaldab mysqlilt autentimist.
 
maildir++ formaati hästi lugev töökindel imapideemon, mboxi ei toeta, võimaldab mysqlilt autentimist.
Sobib koos mysql ja postfixadminiga ideaalselt keskmiste suurustega süsteemidesse.
+
Sobib koos mysql ja postfixadminiga ideaalselt keskmise suurusega süsteemidesse.
  
 
====Cyrus====
 
====Cyrus====
779. rida: 776. rida:
 
Sobib väga suure koormusega süsteemidesse.
 
Sobib väga suure koormusega süsteemidesse.
  
===POstfix delivery tegemine Mysql kataloogi alusel===
+
===Postfix delivery tegemine Mysql kataloogi alusel===
  
 
TODO
 
TODO
806. rida: 803. rida:
 
===Kasulikud lisamaterjalid===
 
===Kasulikud lisamaterjalid===
  
* The book of Postfix: state-of-the-art message transport (Ralf Hildebrandt, Patrick Koetter) - 2009 aasta seisuga tõenäoliselt parim raamat teemal
+
* The book of Postfix: state-of-the-art message transport (Ralf Hildebrandt, Patrick Koetter) - 2009 aasta seisuga tõenäoliselt parim raamat sel teemal
  
 
===Lingid===
 
===Lingid===
818. rida: 815. rida:
 
http://www.redhat.com/support/resources/howto/RH-postfix-HOWTO/x368.html redhat'i postfixi põhjalikud manualid
 
http://www.redhat.com/support/resources/howto/RH-postfix-HOWTO/x368.html redhat'i postfixi põhjalikud manualid
  
http://www.postfix.org/OVERVIEW.html postfixi arhidektuuri täpsem ülevaade
+
http://www.postfix.org/OVERVIEW.html postfixi arhitektuuri täpsem ülevaade
  
 
http://www.onlamp.com/pub/a/onlamp/2004/01/22/postfix.html postfixi logimisest
 
http://www.onlamp.com/pub/a/onlamp/2004/01/22/postfix.html postfixi logimisest

Viimane redaktsioon: 4. september 2025, kell 01:44

                                        Roheline.jpg Toores. Ehk seda pala võib täiendada.

Postfixi arhitektuur

Postfix on vabavaraline mail transfer agent (MTA), serveritarkvara mis mõeldud emailide vastuvõtmiseks ning saatmiseks. Postfixi kiirus, kergelt administreeritavus ja turvalisus on teinud sellest ühe enimkasutatava mta ja levinud alternatiivi sendmailile.

Selle kirjutas hollandlane Wietse Venema ja kasutusse võeti esmakordselt 1999.a.

Abstraktsel tasemel võiks Postfixi tööd iseloomustada sellise skeemiga

                     SISEND                                                      VÄLJUND
 
       postimasinast saadetud kiri                                          
             võrgust saabunud kiri   -------->  järjekorrahaldur -------->  smtp, relay, lmtp
 kohapeal tekitatud edasisuunamine                queue manager             local, virtual, pipe
        kohapeal moodustatud teade

kus on üldiselt kujutatud, et Postfixi sisendisse saabuvate kirjadega asub tegelema järjekorrahaldur ning seejärel väljub kiri ühel kuuest näidatud viisil.

Vasakul on loetletud neli erinevat võimalust, kuidas kiri võib jõuda Postfixi töötlemisele

Kitsam pilt MTA'st oleks allolev. Tegemist on hea pildiga näitamaks, et postfixi näol ei ole tegemist mingi väikese tarkvaraga. Kokku koosneb postfix umbes 11-st põhilisest käsurea utiliidist ja 20-st protsessist/deemonist.

Img17.png

Skeemil suur mull "Master", mille sees kõik teised deemoneid sümboliseerivad kastikesed asuvad, on postfixi nn emadeemon, mis kontrollib kõiki teise protsesse. Tema on postfix aju mis käivitab vajaduse korral erinevaid postfixi ala-deemoneid muude tarvilike tööde jaoks. Nö kubjas

Väiksemad kandilised kastikesed on:

  • smtpd - Tegeleb sissetulevate ühendustega
  • smtp - haldab väljuvaid ühendusi
  • qmgr - controls all messages in the mail queues.
  • local - Postfix own local delivery agent. It stores messages in mailboxes.

Järjekordadest jutustades on Posfixil neli põhilist järjekorda: maildrop, incoming, active ja deferred.

Lokaalne meil saadetakse maildropile ja kopeeritakse incoming järjekorda. Incoming järjekord on mailidele mis äsja saabunud ja queue manager pole neid veel ülevaadanud. Mailid mida ei saa edastada tõstetakse deferred järjekorda, et see ei jääks saabuvatele-saadetavatele kirjadele jalgu.

Kui laiemalt vaadata siis ümbritseb postfixi omakorda veel terve pilv mitmesugustest abitarkvaradest, millega postfix aktiivselt suhtleb nagu spämmitõrje, viirusetõrje jne. Lühidalt oleks ühe tänapäevase viirusetõrjega varustatud postiserveri skeem järgnev:

Openbsd-postfix.png

Ehk siis kiri liigutatakse enne postkasti potsatamist veel läbi portide ning socketite mitmesuguse kontrollprogrammistiku kätte.

Pisut detailsemat juttu http://www.linuxjournal.com/article/9454

Paigalduse osas peaks iga vähegi enesest lugupidavam ja suurem operatsioonisüsteem omama mingit oma porti/installipakki postfixist. Postfix on juba paljude operatsioonisüsteemide vaikimisi mta'ks, näiteks ubuntul. Kaasa tuleb installiga ka ohtralt seadistuse näiteid, abifaile ja manuale

Postimasinast endast saadetud kiri

Nt postimasin seest kasutaja enda poolt saadetud /usr/sbin/sendmail käsuga

 $ echo "kirja sisu" | sendmail -s subjekt mart@loomaaed.tartu.ee

Kirja

  • võrgust saabunud kiri - kõnealune Postfix kuulab arvuti võrguseadme port 25/tcp peal ning üle võrgu pöördub nt teine Postfix
  • kohapeal tekitatud edasisuunamine - nt aliaste lahendamisel
  • kohapeal moodustatud teade - Postfix genereerib oma töö käigus teated, nt nn bounce kirju kui kiri võeti küll töötlemisele nt võrgust aga kirja töötlemisel selgus, et kirja ei õnnestu edasi saata

Eposti kirja ja kirja edastamise protokollid

Huvitav asjaolu on, et eposti kirja formaat ja eposti kirjade vahetamine on kirjeldatud erinevates RFC (Request for Comments) tekstides, vastavalt

Kui postiprogrammiga, nt Icedove koostada kiri ja see saata, siis iseenesest saadab klient postimasinale nt sellise teksti

 Message-ID: <4A90629C.6050100@loomaaed.tartu.ee>
 Date: Sun, 23 Aug 2009 00:26:52 +0300
 From: Priit Kask <priit@loomaaed.tartu.ee>
 User-Agent: Mozilla-Thunderbird 2.0.0.22 (X11/20090706)
 MIME-Version: 1.0
 To: Mart Kask <mart@loomaaed.tartu.ee>
 Subject: testkiri
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
 
 Tere!
 
 Ja siit tuleb üks test kiri.
 
 
 Priit

kus

  • read kuni esimese tühja reani moodustavad kirja päised (headers)
  • ülejäänud read moodustavad kirja keha (body)

Kui aga kirja kätte saanud kasutaja vaatab kogu kirja, siis paistab talle kiri selline

 ...

kus kirja algusse seda kirja töötlenud postimasinad lisanud juurde kirjeid

  • Received - iga postimasin lisab reeglina ühe sellise rea (see on üks rida kuna protokolli kohaselt rida jätkub kui järgmine rida algab tühikuga (ingl. k. whitespace))
  • Return-Path - kohaliku kättetoimetamise (ingl. k. local delivery) teinud postimasin lisab nn ümbriku from aadressi

Kõik juurde lisatud andmed on lisatud SMTP protokolli rääkimise alusel, st need kõik väljendavad kirja teekonna erinevatel etappidel kasutatud ümbriku aadresse.

Aadressklassid

Aadressklasside (ingl. k. address classes) http://www.postfix.org/ADDRESS_CLASS_README.html abil otsustab Postfix milliseid kirju vastu võtta ja kuidas neid edasi toimetada. Addressklass on määratletud kolme tunnuse alusel

  • klassiga seotud domeenide nimekiri (ingl. k. list of domains that are a member of the class) - nt kõik local_domains, kõik relay_domains
  • vaikimisi edasitoimetamise transport (ingl. k. default delivery transport) - nt local, virtual või relay
  • kirjasaajate nimekiri (ingl. k. list of valid recipient addresses)

Vaikimisi on 2009 aastal Postfixis kasutusel sellised aadressklassid

  • local domain class - canonical domains
  • virtual alias domain class - hosted domains
  • virtual mailbox domain class - hosted domains
  • relay domain class - relay domains
  • default domain class

Virtuaalsed domeenid

Oletame, et meil on olukord, kus serveri aadressiks on zoo.tartu.ee ja meil on veel sellel serveril kaks domeeni. Esimene domeen on siil.ee ja teine domeen on karu.ee. Nüüd oleks kiusatus kirjutada need domeenid mydestination muutujale aga sellega kaasneb probleeme. Näiteks, kui meil on serveris kasutaja mart, siis töötaksid seejärel automaatselt mailiaadressid mart@siil.ee ja mart@karu.ee, mida me ei pruugi tahta. Olukorra elegantseks lahendamiseks on virtual maps.

mail.cf konfi kirjutame esiteks virtuaalsed domeenid ja defineerime map faili askoha

 # cat mail.cf:
 ...
 virtual_alias_domains = siil.ee, karu.ee
 virtual_alias_maps = hash:/etc/postfix/virtual

Seejärel tekitame virtual faili, kus kinnistame domeenid kindlate kasutajatega.

 # cat virtual
 mart@siil.ee   mart
 ants@karu.ee   ants

Ja seejärel tekitame virtual faili alusel map faili.

# postmap /etc/postfix/virtual

Ühe domeeni kirjade blokeerimine

Näiteks on tegemist releeserveriga, mis edastab paljude veebiserverite meili. Või siis ühe hostinguserveri meili, kus on sadu domeene. Üks domeenidest hakkab aga agaralt spämmima ja vaja oleks sealt lähtuvad kirjad blokeerida.

Spämmivaks domeeniks on näites hundionu.ee

smtpd_sender_restrictions =
        check_sender_access hash:/etc/postfix/access
        permit_mynetworks
        ...

NB! Järjekord peab kindlasti olema, et permit_mynetworks ja muud lubamised tuleksid peale saatja ligipääsu kontrolli. Nimelt osustatakse esimese reegliga sageli kirja saatus ära ja edasisi reegleid enam ei vaadata.

Seejärel tekitame access faili

# cat /etc/postfix/access
hundionu.ee     REJECT

Tekitame map faili

# postmap /etc/postfix/access

Testimiseks võime anda käsu:

$ echo test | mail kirja_saaja@zoo.tartu.ee -r kirja_saatja@hundionu.ee 

Logis on seejärel näha

Jun 13 11:50:40 re2 postfix/smtpd[4988]: NOQUEUE: reject: RCPT from wwww.zoo.tartu.ee[193.40.0.47]: 554  5.7.1 <jacquelyn_dejesus@hundionu.ee>: Sender address rejected: Access denied; from =<jacquelyn_dejesus@hundionu.ee> to=<kallinson@yahoo.com> proto=ESMTP helo=<www.localdoma

Blokeerida võib ka mitte ainult domeene vaid üksikuid kirju, näiteks kirjutades

ants@hundionu.ee     REJECT

Ajutiste kiirete piirangute jaoks on see lahendus hea kuid püsiva spämmitabeli teemiseks ilmselt liiga tülikas

Kirjade ümbersuunamine teise serverisse

Abiks on kirjade edasi suunamisel ka transports mis Võimaldab kõiki või teatud domeenide maile suunata edasi teisele aadressile

Kasutamiseks vaja main.cf'is defineerida

transport_maps = hash:/etc/postfix/transport

Ning faili /etc/postfix/transport

*midagi.ee smtp:mail.tartu.ee

postmapi andmebaasi genereerimiseks

postmap /etc/postfix/transport

restart postfix and now every e-mail sent to example.com will relay through your specified e-mail server.

sender_canonical_maps võimaldab saatja aadresse ümber kirjutada, kasutamine

sender_canonical_maps = hash:/etc/postfix/sender_canonical 

ja sinna faili kirjutada midagi sellist:

root@localhost	root@loomaaed.zoo.edu.ee

Postfixi konfiguratsioon ehk failid main.cf ja master.cf

Postfixi põhilisteks seadistusfailideks on main.cf ja master.cf. Main.cf sisaldab postfixi seadistusparameetreid mis vajalikud mailide liigutamiseks ning master.cf seadistab deemonprotsesse

Kõige lihtsamaks main.cf seadistuseks oleks

smtpd_banner = $myhostname ESMTP $mail_name (no spam please ;) )
myhostname = loomaaed.tartu.ee
mydomain = $myhostname
myorigin = $mydomain
inet_interfaces = all
mynetworks = 127.0.0.0/8, 192.168.1.0/24
mydestination = $myhostname, localhost.$mydomain, elva.loomaaed.tartu.ee ../etc/postfix/mydestination
unknown_local_recipient_reject_code = 550
alias_maps = hash:/etc/mail/aliases
alias_database = hash:/etc/mail/aliases
relay_domains = $mydestination, ../relay_domains
home_mailbox = mbox
smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination

See kõik on üldine ja töötab ühtemoodi nii freebsd, solarise kui debiani või kasvõi windowsil (kui postfix sinna kunagi porditakse)

Seejärel tuleb muidugi seadistada ka postfixi septsiifilisem osa, mis varieerub erinevatel operatsioonisüsteemidel, näiteks kus asub deemon, kus spool kaust või mis õigustes töötab postfix

Kasutada võib ka muutujaid stiilis config_directory = ../postfix ja kasutada stiilis transport_maps = hash:$config_directory/transport

Seletaks pisut põhilisi ridu lahti

smtpd_banner = $myhostname ESMTP $mail_name (no spam please ;) )

Üldine teade mida näeb kui ühenduda 25 pordi külge, üldiselt täidab pigem ilu ülesannet :)

myhostname = kool.edu.ee

See muutuja võetakse tavaliselt shellist ja sõltub mis on sereri hostnameks määratud, üldiselt võib olla soov seda siiski sageli muuta

mydomain = $myhostname

mydomain võib samuti sageli erineda myhostnamest, üldiselt kui aga ei võib kasutada näiteks muutujat $myhostname

myorigin = $mydomain

is the domain name that locally-posted email appears to have come from and is delivered to.

inet_interfaces = all

Postfix kuulab vaikimisi kõikidel võrguseadmetel mis serveril küljes 25ndat porti ja kust posti ka vastu võetakse

mynetworks = 127.0.0.0/8, 192.168.1.0/24

IP aadressid või võrkude vahemikud mis on turvalised nimetame localhosti ja serveritaguse kontori sisevõrgu. Nendest võrkudest võib saata maile läbi serveri. Kõik katsed saata või relay'da maili teistelt mitte siin defineeritud ip'delt keelatakse

Selleks, et etteantud IP vahemikust mõni aadress ajutiselt välja jätta, näiteks on see arvuti hakanud levitama spammi ning ei soovi, et postimasin pakuks talle relay ehk kirjade edasisaatmise võimalusi saab $mynetworks sisse kirjutada ka kujul !1.2.3.4/32 või !/path/to/file ja viimase sees siis IP numbrid/vahemikud, mis tuleb välja jätta. Töötab ka type:table. Seejuures tuleb tähele panna, et esimene sobivus võidab ehk soovitatav on kirjutada need piirangud enne teisi aadresse.

mydestination = $myhostname, localhost.$mydomain, ../etc/mydestination

Siin võib defineerida veel kõik masina küljes olevad domeenid neid komaga eraldadest, kust server peaks emaile vastuvõtma, lihtustamise huvides võib need kõik mydestination faili lisada ning faili korraga külge võtta

../etc/mydestination
loomaaed.tartu.ee
mail.tartu.ee

unknown_local_recipient_reject_code = 550

Viisakas seadistada teiste mailisaatjate jaoks.

alias_maps = hash:/etc/mail/aliases

alias faili, vaikimisi etc all

alias_database = hash:/etc/mail/aliases

Alias faili andmebaas

relay_domains = $mydestination, /etc/postfix/relay_domains

Nimed domeenidest millele mailiserver on teiseks mx'iks. Näiteks lihtsalt loeteluna.

loomaaed.tartu.ee
mail.tartu.ee

home_mailbox = mbox

Mailide salvestamise formaadiks mailbox. See on kõige vanem ja lihtsam formaat kuid mitte kõige parem ja tänapäeval oleks tegelikult juba üsnagi mõttekas kasutada maildir'i home_mailbox = Maildir/ võimalik on kogu maili kettale transportimine anda eraldi programmina, näit cyrusele mailbox_transport = cyrus

smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain

Piirangud läbi mailiserveri saatjale, lubame automaatselt mynetwork'ist saatmised ning keelame tundmatud

smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination

siinpuhul saab seadistada veel

 permit_sasl_authenticated,
 reject_non_fqdn_hostname,
 reject_non_fqdn_sender,
 reject_non_fqdn_recipient,
 reject_unauth_destination,
 reject_unauth_pipelining,
 reject_invalid_hostname,
 reject_rbl_client bl.spamcop.net,
 reject_rbl_client sbl-xbl.spamhaus.org

Kui on soov suunata väljuv epost läbi mingi kindla serveri tasub kasutada relayhost muutujat, nt

relayhost = mail.hot.ee

Ja veel main.cf'i kasulikke muutujaid töökindluse suurendamiseks

Kõikide muutujate lahtiseletamine ja esiletoomine läheks väga pikaks, nendekohta on üsnagi mahukas ja põhjalik kirjeldus ametlikus postconf manualis http://www.postfix.org/postconf.5.html aga püüaks veel mõningaid ja põhiliselt spämmimise/ddos'imisi piiravaid ja töökindlust suurendavaid parameetreid esiletuua

maximal_queue_lifetime = 3d bounce_queue_lifetime = 3h

Saba elupikkuse reguleerimine, oluline masinates mis näiteks paljudele teistele domeenidele relay'ks

relay_domains = /etc/mail/relay-domains

domeenid milledele näiteks ollakse teiseks mx'iks

Suhtlemiskiiruste limiteerimised

anvil_rate_time_unit = 60s
smtpd_client_connection_count_limit = 5
smtpd_client_connection_rate_limit = 100
smtpd_client_message_rate_limit = 100
smtpd_client_recipient_rate_limit = 200
smtpd_client_event_limit_exceptions = $mynetworks, ".ee"
smtpd_timeout = 60s

Hea kasutada spammimiste pidurdamisteks

selleks hea näiteks nõuda ka smtpd_helo_required = yes kui korrektset suhtlus pole ei tule ka vastuseid ja määrata veel lisatäiendusi smtpd_helo_restrictions = permit_mynetworks, reject_non_fqdn_hostname, reject_invalid_hostname

Kui on vaja omakorda mingit ip'd või domeeni whitelistida mis on ometigi mitmetes rbl listides sees või ei vasta mingitele tingimustele tuleks see lisada rida check_client_access hash:/etc/postfix/client_access tekitada vastav fail sisuga näiteks 193.40.0.9 OK ning genereerida failile postmapiga andmebaas

Aadresside laiendused

postfixi main.cf'i tuleb lisada

recipient_delimiter = +

See teeb võimalikuks saata kirje aadressidele kasutaja+laiend@loomaaed.zoo.ee

See on hea seepärast, et saaks erinevatesse kohtadesse panna näiliselt erinevad aadressid, samas aliasi defineerimata. Postfix üritab esmalt saata kirja kasutajale 'kasutaja+laiend', kui see ei õnnestu, siis 'kasutaja'.

Nüüd saan panna aadressid nt kasutaja+plesk_admin ja kasutaja+plesk_reseller ja postkastist kirja lugedes saan teada, kellele mingisugune kiri mõeldud oli.

Seda on hea kasutada ka mingitesse foorumitesse jne registreerimisel, kus paned kasutaja+fooruminimi@zoo.ee aadressiks ja kui spämmi tulema hakkab, on kohe teada, kust lekkis (vähemalt saab pahandada ja teisi hoiatada).

Postisüsteemi testimine

Postisüsteemi heaks testimise abivahendiks on ikka telnet muidugi ja telnet port 25 sest kui MX pole masinale määratud siis on talle väga raske maili normaalsete vahenditega saata

Ühendume mailiserveriga

# telnet zoo.loomaaed.ee 25
Trying 193.40.0.17...
Connected to zoo.loomaaed.ee.
Escape character is '^]'.
220 zoo.loomaaed.ee ESMTP

Ütleme tervituse

HELO zoo.loomaaed.ee
250 zoo.loomaaed.ee

Aadress kellele soovime maili saata

MAIL FROM: kadri@mailiserver.ee
250 2.1.0 Ok

Kirjutame aadressi mis aadressilt saadetakse

RCPT TO: katsetus@zoo.loomaaed.ee
250 2.1.5 Ok

Sisestame andmed

DATA
354 End data with <CR><LF>.<CR><LF>
tere

Kui enam midagi lisada ei soovi lõpetame punktiga

.
250 2.0.0 Ok: queued as 95C49F3118

Kirjutatud mail on ülal oleva teksti järgi lisatud järjekorda ning võime väljuda quit käsuga

quit

Jõudlus

TODo

Spam

Aadressil http://spamassassin.apache.org/gtube/ on nö standardspämmi, mille nt Spamassassin peaks avastama

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Katsetamiseks tuleks see järgnevus sisestada kirja eraldi reana, reavahetusega lõpus.

Viirus

Aadressil http://www.eicar.org/anti_virus_test_file.htm on nö standardne viirus, mille nt ClamAV peaks avastama

 X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Katsetamiseks tuleks see salvestada tekstifaili reavahetusega lõpus ning lisada kirjale.

Piirangute rakendamine töödeldavale epostile

Postfix võimaldab üksikasjaliselt kontrollida, millist eposti süsteem töötlema hakkab, st võtab vastu ning saadab edasi või edasisaatmise asemel teeb local delivery. Käesolevas punktis käsitletavad piirangud on nn before-queue piirangud, st need rakendatakse enne kirja sabasse (ingl. k. queue) võtmist.

Selleks, et paremini mõista Postfix poolt pakutavate piirangute seadistamise võimalusi, kordame üle milline järgnevust sooritatakse vastavalt SMTP protokollile kui postimasina poole pöördub SMTP klient; rea lõpus on märgitud millist Postfixi piirangute nimekirja on mingi andmevahetuse etapi juures võimalik rakendada.

 smtp-client ---> smtp-klient.auul ühendub Postfix serveri 25/tcp pordile   <--- smtpd_client_restrictions
 smtp-server ---> 220 smtp-server.auul ESMTP Postfix (Debian/GNU)        
 smtp-klient ---> EHLO post-klient.auul                                     <--- smtpd_helo_restrictions
 smtp-server ---> 250-smtp-server.auul
                  250-PIPELINING
                  250-SIZE 10240000
                  250-VRFY
                  250-ETRN
                  250-STARTTLS
                  250-ENHANCEDSTATUSCODES
                  250-8BITMIME
                  250 DSN
 smtp-klient ---> MAIL FROM:<priit@loomaaed.tartu.ee> SIZE=325              <--- smtpd_sender_restrictions
                  RCPT TO:<mart@bmail.com> ORCPT=rfc822;mart@bmail.com      <--- smtpd_recipient_restrictions
                  DATA
 smtp-server ---> 250 2.1.0 Ok
                  250 2.1.5.Ok
                  354 End data with <CR><LF>.<CR><LF>
 smtp-klient ---> saadab kirja osa
                  ...

Piirangute nimekiri võib olla mõnel juhul tühi ja mõnel juhul peab kindlasti sisaldama vähemalt kindlaksmääratud piiranguid. Piirangute kontroll toimub selliselt

  • piirangute nimekirjast rakendatakse esimene klappinud piirang, järgmisi selle nimekirja piiranguid ei kontrollita
  • rakendatakse esimene tulemusega (REJECT, DEFER või PERMIT) lõppenud piirangute nimekiri

Kontrolli tulemus rakendatakse peale RCPT TO andmete saamist.

Nt võiks kasutada sellist piirangute nimekirja, selline on nimekiri vaikimisi Debiani Lenny puhul ja väljund on esitatud järjestatuna rakendamise järjekorras

 # postconf | grep smtpd_ | egrep "(_client_|_helo_|_sender_|_recipient_)" | egrep "restrictions "
 smtpd_client_restrictions = 
 smtpd_helo_restrictions = 
 smtpd_sender_restrictions = 
 smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination

Siinjuures tuleb tähele panna asjaolu, et igas reeglite nimekirjas on lubatud kasutada ainult teatud kontrolle, kusjuures igas järgmises on lubatud kasutada eelmiste nimekirjade kontrolle. Antud juhul ongi smtpd_recipient_restrictions juures kasutatud permit_mynetworks'i, mis on iseenesest smtpd_client_restrictions nimekirja kontroll, vt http://www.postfix.org/postconf.5.html

Esitatud näites esimesena kehtestatav ning ainuke piirangute nimekiri on smtpd_recipients_restrictions ja mis sisaldab kahte kontrolli

  • permit_mynetworks - lubada saata posti nendest alamvõrkudest, milles asub postimasin
  • reject_unauth_destination - keeldutakse töötlemast posti mida ei ole postimasin seadistatud kas vahendama või millele tegema local deliverit

Mõned allikad soovitavad kõik piirangud seadistada ühe smtpd_recipient_restrictions parameetri abil kuna nii on ehk tagatud parem ülevaatlikkus.

Seadistamine

Süsteemist väljuva posti ümbriku muutmiseks tuleb kasutada mail.cf failis rida

 smtp_generic_maps = hash:/etc/postfix/generic

ning /etc/postfix/generic ise sisaldab näiteks selliseid ridu

 www-data@arvuti.sisedomeen   www-bounce@valisdomeen.ee
 root@arvuti.sisedomee       www-bounce@valisdomeen.ee

Muudatuste kehtestamiseks tuleb generic'ile vastav andmebaas moodustada käsuga

 # postmap /etc/postfix/generic

ning laadida reload'iga Postfix.

Käsuga postconf testitatakse parasjagu kehtetatud Posfixi seadistusi

 # postconf

ning lisades võtme -n esitatakse main.cf failis kasutatud parameetrite väärtused

 # postconf -n

Konkreetse parameetri väärtust saab küsida nii, nt

 # postconf mail_version
 mail_version = 2.5.5

Kui on vaja näha postfixi vaikimisi seatud väärtusi siis tuleb käivitada postconf -d võtmega


TLS krüpteering ja SASL auth

Kasutajate autentimine ja kürpteeritud login

Postfix TLS

Postiserverite vahelise andmevahetuse krüptimine

Selleks, et server võimaldaks krüptida smtp klientide sissetulevaid ühendusi peavad olema seadistusfailis main.cf read

smtpd_tls_key_file = /etc/postfix/serdid/smtp.loomaaed.tartu.ee.pem
smtpd_tls_cert_file = /etc/postfix/serdid/smtp.loomaaed.tartu.ee.crt
smtpd_tls_CAfile = /etc/postfix/serdid/loomaaed-ca.crt
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache

kus

  • smtpd_tls_key_file näitab, millises failis asub sertifikaadile vastav salajane võti
  • smtpd_tls_cert_file näitab, millises failis asub sertifikaat
  • smtpd_tls_CAfile näitab, millises failis asuvad sertifikaadi allkirjastanud ahela ülemised sertifikaadid

Selleks, et teha kindlaks, kas postiserver toetab SMTP STARTSSL laiendust sobib öelda

$ openssl s_client -starttls smtp -showcerts -connect 192.168.1.251:25

Kirjade töötlemine välise programmiga

Ühel või teisel põhjusel võib olla vaja sellist asjakorraldus, et kas postisüsteemi kõiki või vaid teatud tunnustele vastavaid kirju saaks töödelda välise programmiga. Ja selliselt, et väline programm saab andmeid oma stdio'sse ning järele mõned argumendid. Üheks võimaluseks seda korraldada on kostümiseeritud transporti kirjeldamise abil.

  • /etc/postfix/main.cf faili tuleb lisada rida
 transport_maps = hash:/etc/postfix/transport
  • /etc/postfix/transport failis peab sisalduma nt rida
 loomaaed.tartu.ee pf

ning tuleb öelda

 # postmap /etc/postfix/transport
  • /etc/postfix/master.cf failis peab sisaldub sektsioon
 pf    unix  -       n       n       -       -       pipe   
 flags=RDX user=programmikasutaja argv=/bin/pf.pl ${user} ${domain}

ning kui /bin/pf.pl sisaldab nt

 #!/usr/bin/perl
 open (fh, ">>/tmp/pf.log");
 
 print fh "$ARGV[0]\n";
 print fh "$ARGV[1]\n\n\n";
 
 @read=<STDIN>;
 
 foreach $rida (@read) {
   print fh $rida;
 }

Siis selle faili algusse kirjutatakse epostiaadressi @ märgist vasemale ja paremale jääv osa erinevatele ridadele ning kirja sisu kusjuures lisatakse päisele mõned read vastavalt sellele, mida lipud flags järel ütlevad.

SPF - Sender Policy Framework

SPF (Sender Policy Framework - ingl. k. epost saatja kontrollimise raamistik) http://www.openspf.org/Project_Overview võimaldab saavutada sellised eesmärke

  • kaitsta eposti vastuvõtjat ümbriku from aadressi võltsijate eest (eeldusel, et võltsitava domeeninime omanikud oma domeenidele kirjeldanud spf (või sfp sisuga txt) -kirjed)
  • kaitsta domeeninime omanikku ümbriku from aadressi võltsijate tegevuse eest, tulemusena ei saa võltsijad saata kontrollimatult adressaatidele võltsitud eposti

SPF tööpõhimõtte kirjeldus

Leidub palas Spam

Eposti vastuvõtja ettevalmistamine

Postfix sisaldab 'Postfix SMTP access policy delegation' http://www.postfix.org/SMTPD_POLICY_README.html süsteemi, mille abil saab ühendada MTA välise lahendusega, antud juhul SPF'iga, selleks, et teostada täiendavat kontrolli, milliste omadustega kirju saab läbi kõnealuse postisüsteemi saata.

Logi ja probleemidega tegelemine

Kui mingil põhjusel on tarvis uurida mõnda parasjagu sabas olevat kirja, siis sobib selleks programm postcat. Tavaliselt saab logist või mailq programmi väljundist teada kirja identifikaatori ning selle abil õnnestub sabast kirjale vastav fail üles leida.

 # mailq
 ....
 C558C4DC80      794 Sat Dec 20 10:18:55  bounce@loomaaed.tartu.ee
           (connect to smtp-gw.loomaaed.tartu.ee[10.0.2.5]: Connection refused)
                                        mart@loomaaed.tartu.ee
 ..
 # find /var/spool/postfix -name C558C4DC80 -ls
 313873    4 -rw-------   1 postfix  postfix       257 Dec 21 23:14 /var/spool/postfix/defer/C/C558C4DC80
 318592    4 -rwx------   1 postfix  postfix      1001 Dec 22 00:20 /var/spool/postfix/deferred/C/C558C4DC80
 
 # postcat /var/spool/postfix/deferred/C/C558C4DC80
 ... 
 nö inimloetaval kujul formateeritud väljund

Kui on vajadus sabas olev kiri kustutada, siis ei tohiks seda teha niisama failisüsteemist vastavate failide kustutamise teel vaid tuleb kasutada nt programmi postsuper, öeldes

 # postsuper -d C558C4DC80

Suuremate mailivoogude ning blokeerumiste korral on hea uurida mis domeenid on probleemiks ja mis järjekordades on need kinni. Mailq pole samuti sageli selles osas eriti ülevaatlik.

# qshape deferred | head
                                         T  5 10 20 40 80 160 320 640 1280 1280+
                                 TOTAL 540  0  3  1  2 10   4  14  31   59   416
                          mingi.edu.ee 320  0  2  1  0  9   3   4  11   51   239
                           hotmail.org  25  0  0  0  0  1   0   0   0    0    24

Mõne domeeni või saatja kõigi kirjade eemaldamiseks võib kasutada sarnast käsku

# mailq | grep spamidomeen.ee | awk '{ print $1 }' | postsuper -d -

Või

# mailq | grep 'MAILER-DAEMON$' | cut -d ' ' -f 1 | postsuper -d - 

Selleks, et eemaldada sabast kõik kirjad siis allolev käsk, soovites mõnda spetsiifilist järjekorda siis lisada sellele käsu lõppu veel näiteks DEFERRED

# postsuper -d ALL

Kirjade sabast ära saatmiseks

 # postqueue -f

Pseudograafiline mailisaba haldur pfqueue http://pfqueue.sourceforge.net/

Pfqueue.JPG

Postfixi sabaga töötamist hõlbustav skript

Postfixi queue on kasutamiseks üsnagi halvas formaadis, nimelt esitatakse iga kirja kohta info kolmel real. Selle hõlbustamiseks võiib tekitada nt järgneva bashi skripti.

# cat /usr/local/bin/mailq_filter 
#!/bin/bash

if "$1" == "-l" 
then
  LONG='" " err'
fi
mailq | awk "BEGIN{ RS = \"\n\n\"};
{
  gsub(/\n/,\" \");
  match(\$0, /\(.*\)/);
  err = substr(\$0, RSTART, RLENGTH);
  sub(/\(.*\)/, \"->\", \$0);
  if( \$1 != \"--\") \$2 = \"\";
  gsub(/  */, \" \");
  print \$0 $LONG
}"

See skript väljastab ühel real mail ID kuupäev saatja -> saajad. Kui lisada võti '-l' (nagu long), siis paneb kõige lõppu ka Postfixi veateate, mispärast see deferred'is istub.

Nüüd saab näiteks selliseid otsinguid korraldada:

$ mailq_filter | grep "\.com ->  .*\.com"

Või kirjutada selliseid konstruktsioone

$ mailq_filter | grep mingistring-domeen | awk '{ print $1 }' | postsuper -d -

Või koostada pingerida sabas olevatest kirjadest saatja alusel

$ mailq_filter | awk '{ print $6 }' | sort | uniq -c | sort -rn | head

tulemuseks

      7 notification+kjdm13h7wupd@facebookmail.com
      6 personalikeskus@gmail.com
      5 web.office.0100.10@att.net
      5 notification+kr4mwb45snxr@facebookmail.com
      3 returned@mail2market.net

Milter

TODO

Postfixi olulised tööriistad

Oluliseimad posfixi käsud mida sagedamini igapäevaelus võib vajaminna on

  • postalias - loob aliase andmebaasi
  • postcat - võimaldab vaadata järjekorras olevate failide sisu
  • postmap - loob lookup map'e, suur hulk postfixi konfiguratsiooni informatsiooni hoitakse lookup tabelites.
  • postconf - postfixi parameetrite/seadistuse vaatamine ja muutmine

konfiguratsiooni saab jooksvalt vaadata käsuga postconf -n

Postconf võimaldab kiirelt ja mugavalt muuta mingeid parameetreid main.cf seadistuses ning seda võib kasutada nii hästi skriptimisel näiteks

postconf -e 'readme_directory = no'

Käsuga muudetakse readme_directory väli

  • postqueue - võimaldab ligipääsu postfixi järjekorrale
  • postsuper - võimaldab järjekorraga manipuleerida, kustutada neid või liigutada ringi, samuti parandada vajaduse korral järjekorra struktuuri
  • postdrop -
  • postfix
  • postkick
  • postlock
  • postlog

Imap deemonid mis sobivad kasutamiseks koos postfixiga

Imap-uw

Vanem ja lihtsam deemon, suudab vaid mbox formaati jagada. Halvasti konfigureeritav ja ebastabiilsem. Suurtesse süsteemidesse ei soovitaks

Dovecot

Lihtne, töökindel ja äärmiselt hästi konfigureeritav imap klient, loeb nii maildir++ kui mbox formaati. Sobib väiksematesse mailiserveritesse eriti hästi.

Courier

maildir++ formaati hästi lugev töökindel imapideemon, mboxi ei toeta, võimaldab mysqlilt autentimist. Sobib koos mysql ja postfixadminiga ideaalselt keskmise suurusega süsteemidesse.

Cyrus

Lisaks imap deemonile tegeleb ka ise mailide kettale toimetamisega. Hoiab neid eraldi muudetud maildir++ formaadis ning peab berkeley db andmebaasides infot. Sobib väga suure koormusega süsteemidesse.

Postfix delivery tegemine Mysql kataloogi alusel

TODO

Postfix delivery tegemine LDAP kataloogi alusel

Valmistada LDAP kliendi seadistused ette /etc/ldap/ldap.conf failis ja Postfixi jaoks põhimõtteliselt midagi sellist

 # cat /etc/postfix/ldap.cf
 server_host = ldaps://ldap.loomaaed.tartu.ee
 version = 3
 
 search_base = dc=loomaaed,dc=tartu,dc=ee
 query_filter = mail=%s
 result_attribute = sn

kontrolliks sobib küsida

 # postmap -q mart@loomaaed.tartu.ee ldap:/etc/postfix/ldap.cf 
 Kask

Queue kopeerimine postimasinate vahel

Kui mitu postimasinat töötavad koostöös, siis võib olla asjakohane nt ühe arvuti hoolduse ajaks sinna sappa kogunenud kirjad paigutada mõnda sobivasse muusse postimasinasse ringi. Selleks peab teine postimasin lubama kõnealuse postimasina kirju ning hooldusse minevas postimasinas tuleb nt relayhost parameetri abil kopeerida kirjad ära.

Kasulikud lisamaterjalid

  • The book of Postfix: state-of-the-art message transport (Ralf Hildebrandt, Patrick Koetter) - 2009 aasta seisuga tõenäoliselt parim raamat sel teemal

Lingid

http://www.postfix.org/documentation.html Ametlik dokumentatsioon

http://en.wikipedia.org/wiki/Comparison_of_mail_servers Mailiserverite võrdlused

http://dspam.nuclearelephant.com/index.shtml dspam koduleht

http://www.redhat.com/support/resources/howto/RH-postfix-HOWTO/x368.html redhat'i postfixi põhjalikud manualid

http://www.postfix.org/OVERVIEW.html postfixi arhitektuuri täpsem ülevaade

http://www.onlamp.com/pub/a/onlamp/2004/01/22/postfix.html postfixi logimisest

http://www.cyberciti.biz/faq/howto-blacklist-reject-sender-email-address/ blacklist aadressidele

http://www.linuxjournal.com/article/9454 Postfixi anatoomia

http://www.compwrite.com/?p=57

http://www.cyberciti.biz/tips/howto-postfix-flush-mail-queue.html saba puhastamisest