Erinevus lehekülje "Postfix'i kasutamine Debianiga" redaktsioonide vahel

Allikas: Kuutõrvaja
(Postfixi seadistamine võtma vastu loomaaed.tartu.ee domeeni kirju)
(Postfixi seadistamine võtma vastu loomaaed.tartu.ee domeeni kirju)
186. rida: 186. rida:
  
 
   # postfix -d
 
   # postfix -d
 +
 +
Tarkvara paigaldamise käigus moodustatud seadistused täidavad püstitatud eesmärgi kirjade vastuvõtmise osas
 +
 +
* inet_interfaces = all
 +
* mydestination = loomaaed.tartu.ee, mail.loomaaed.tartu.ee, localhost.loomaaed.tartu.ee, localhost
 +
* vaikimisi postfixi ei ole avatud relee (ingl. k. open relay), st läbi mail.loomaaed.tartu.ee ei saa avalikust internetist pöördudes saata kirju suvaliste domeenide kasutajatele
  
 
====Kirja vastuvõtmine====
 
====Kirja vastuvõtmine====
 
TODO
 
  
 
===Postfixi seadistamine saatma välja alamvõrgu 192.168.0.0./24 kirju===
 
===Postfixi seadistamine saatma välja alamvõrgu 192.168.0.0./24 kirju===

Redaktsioon: 11. juuli 2009, kell 19:08

Eesmärk

Eesmärgiks on seadistada käima selliste omadustega postiedastusagent Postfix

  • võtab internetist vastu domeeni loomaaed.tartu.ee kasutajate epostiaadressidele saadetud kirju aadressil 192.168.0.25
  • salvestab vastuvõetud loomaaed.tartu.ee doomeeni kirjad oma failisüsteemi, st teeb local delivery
  • võimaldab saata kirju välja internetti teistele kasutajatele alamvõrgus 192.168.0.0/24 asuvatest arvutitest
                        internet  
                          ...
                           .
                           v
 
          192.168.96.138  _|_
                         |   | Tulemüür
                         |___|
                           |   192.168.0.254/24
                           |                      192.168.0.0/24 alamvõrk
    -----|---------|-------|--------------|-------------------------------
         |         |                      |
        _|_       _|_                    _|_  192.168.0.25/24
       |   |     |   |                  |   | 
       |___|     |___|                  |___|
      
    Töökohaarvuti A                         Postimasin
 
               Töökohaarvuti B

Kuigi joonisel on kasutatud nö privaatseid aadresse kehtib loogilises mõttes esitus avalike aadresside kasutamise juhu kohta. Eraldi punktis ... käsitletakse juhtumit, kui postimasin kasutab privaatset aadressi ning asub aadress-teisendava tulemüüri taga.

Nimesüsteemi ettevalmistamine

Selleks, et avalikus internetis saaksid ülidselt teised kasutajad (nt Gmail kasutajad) saata kirju nt aadressil mart@loomaaed.tartu.ee peab olema avalikus nimesüsteemis kirjeldatud domeeni loomaaed.tartu.ee MX kirje. Selleks tuleb pöörduda nimeteenuse pakkuja poole ning öelda milline on kasutatav avalik ip aadress ning millist domeeninime soovitakse kasutama asuda, põhimõtteliselt saab tehnilises mõttes sellise soovi alusel avalikus nimesüsteemis vajalikud muudatused teha.

MX kirja näeb välja nt selline

 $ dig @ns.nimeserver.ee loomaaed.tartu.ee mx
 ...
 ;; QUESTION SECTION:
 ;looomaaed.tartu.ee.                  IN      MX
 
 ;; ANSWER SECTION:
 looomaaed.tartu.ee.           300     IN      MX      20 mail.loomaaed.tartu.ee.
 
 ;; AUTHORITY SECTION:
 looomaaed.tartu.ee.           300     IN      NS      ns.nimeserver.ee.
 looomaaed.tartu.ee.           300     IN      NS      ns.loomaaed.tartu.ee.

 ;; ADDITIONAL SECTION:
 mail.loomaaed.tartu.ee.       300     IN      A       192.168.96.138
 ns.nimserver.ee.              8994    IN      A       192.168.193.163
 ns.mail.loomaaed.tartu.ee.    300     IN      A       192.168.96.138

Kui kasutaja internetist püüab saata kirja aadressile mart@loomaaed.tartu.ee, siis toimub selline järgnevus

  • kasutaja süsteemi programm küsib avalikust nimesüsteemist milline on loomaaed.tartu.ee postimasina nimi, saab teada, et mail.loomaaed.tartu.ee
  • kasutaja süsteemi programm saab lisaks teada, et mail.loomaaed.tartu.ee postimasin asub aadressil 192.168.96.138
  • kasutaja süsteemi programm võtab aadressile mart@loomaaed.tartu.ee kirja saamise asjus ühendust soketil 192.168.96.138:25 töötava postiprogrammiga

Postimasina ettevalmistamine

Postimasinas tuleks esmalt kontrollida, kas arvuti nimi on korrektselt seadistatud. Antud juhul peaks olema failis /etc/hostname kirjas

 # cat /etc/hostname
 mail

ning failis /etc/hosts kirjas

 # cat /etc/hosts
 127.0.0.1       localhost.localdomain localhost
 192.168.96.138  mail.loomaaed.tartu.ee      mail

Kontrollimiseks peab hostname programmile süsteem vastama nii

 # hostname
 mail
 # hostname -f
 mail.loomaaed.tartu.ee

Olgu postimasin ühendatud võrku nii nagu punktis Eesmärk on esitatud, kusjuures

  • tulemüürist peab saama pöörduda postimasina pordile 25/tcp
  • postimasin peab saama pöörduda internetti pordile 25/tcp
  • postimasin peab saama nimesid lahendada

Lisaks võiks postimasinas olla seadistatud selline tarkvara

  • ntp - ajaserver, õigemini küll kliendi rollis
  • lokaat

Tarkvara paigaldamine

Postfix tarkvara v. 2.5.5 saab paigaldada Debiani paketihaldusest öeldes

 bash# apt-get install postfix postfix-doc

Tavaliselt siis eemaldatakse vaikimisi Debiani standard operatsioonisüsteemi kooseisus esinev Exim Postfixi vastu. Postfixi paigaldamisel tuleb valida 'General type of configuration', valime 'Internet Site'

Postfix-1.gif

Seejärel küsitakse 'mail name' väärtust, see hakkab esinema läbi selle postisüsteemi välja saadetud kirjade eposti aadresside @ märgist paremal

 loomaaed.tartu.ee

Seejärel tekitatakse kasutaja, genereeritakse seadistusfailid ja käivitatakse Postfix.

 Setting up postfix (2.5.5-1.1) ...
 Adding group `postfix' (GID 107) ...
 Done.
 Adding system user `postfix' (UID 105) ...
 Adding new user `postfix' (UID 105) with group `postfix' ...
 Not creating home directory `/var/spool/postfix'.
 Creating /etc/postfix/dynamicmaps.cf
 Adding tcp map entry to /etc/postfix/dynamicmaps.cf
 Adding group `postdrop' (GID 108) ...
 Done.
 setting myhostname: mail.loomaaed.tartu.ee
 setting alias maps
 setting alias database
 changing /etc/mailname to loomaaed.tartu.ee
 setting myorigin
 setting destinations: loomaaed.tartu.ee, mail.loomaaed.tartu.ee, localhost.loomaaed.tartu.ee, localhost
 setting relayhost: 
 setting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
 setting mailbox_size_limit: 0
 setting recipient_delimiter: +
 setting inet_interfaces: all
 /etc/aliases does not exist, creating it.
 WARNING: /etc/aliases exists, but does not have a root alias.
 
 Postfix is now set up with a default configuration.  If you need to make 
 changes, edit /etc/postfix/main.cf (and others) as needed.  To view Postfix configuration
 values, see postconf(1).
 
 After modifying main.cf, be sure to run '/etc/init.d/postfix reload'.
 
 Running newaliases
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.
 Setting up postfix-doc (2.5.5-1.1) ...

Postfixiga on seotud failisüsteemis sellised kataloogid ning failid

  • /etc/postfix - Postfixi seadistusfailid, kõige olulisemad on main.cf ja master.cf
  • /etc/mailname - sisuga 'loomaaed.tartu.ee'
  • /var/spool/postfix - saba (ingl. k. queue)
  • /var/log/mail.* - logi
  • /usr - programmifailid ja teegid ning dokumentatsioon, erinevates kataloogides, 'dpkg -L postfix' ütleb
  • man 5 postconf - manuaal
  • /etc/aliases - nn aliases andmebaas

Postfixi seadistamine võtma vastu loomaaed.tartu.ee domeeni kirju

Postfix tarkvara paigaldamisel osaliselt juba tarkvara ka seadistati, kuid siiski maksab vaadata seadistused üksikasjaliselt üle.

Parasjagu kehtestatud seadistusi saab küsida öeldes 'postconf -n', -n võti tähendab, et esitatakse seadistused, mis on /etc/postfix/main.cf failis kirjeldatud

 # postconf -n
 alias_database = hash:/etc/aliases
 alias_maps = hash:/etc/aliases
 append_dot_mydomain = no
 biff = no
 config_directory = /etc/postfix
 html_directory = /usr/share/doc/postfix/html
 inet_interfaces = all
 mailbox_size_limit = 0
 mydestination = loomaaed.tartu.ee, mail.loomaaed.tartu.ee, localhost.loomaaed.tartu.ee, localhost
 myhostname = mail.loomaaed.tartu.ee
 mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
 myorigin = /etc/mailname
 readme_directory = /usr/share/doc/postfix
 recipient_delimiter = +
 relayhost = 
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
 smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
 smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
 smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
 smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
 smtpd_use_tls = yes

Kõigi kehtestatud seadistusparameetrite nimekirja koos väärtustega näeb öeldes

 # postconf

ning vaikeväärtustega nimekirja öeldes

 # postfix -d

Tarkvara paigaldamise käigus moodustatud seadistused täidavad püstitatud eesmärgi kirjade vastuvõtmise osas

  • inet_interfaces = all
  • mydestination = loomaaed.tartu.ee, mail.loomaaed.tartu.ee, localhost.loomaaed.tartu.ee, localhost
  • vaikimisi postfixi ei ole avatud relee (ingl. k. open relay), st läbi mail.loomaaed.tartu.ee ei saa avalikust internetist pöördudes saata kirju suvaliste domeenide kasutajatele

Kirja vastuvõtmine

Postfixi seadistamine saatma välja alamvõrgu 192.168.0.0./24 kirju

TODO

Kirja väljasaatmine

TODO

Postimasina kasutamine tulemüüri taga NAT võrgus

TODO

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 - keeldutaks töötlemast posti mida ei ole postimasin seadistatud kas vahendama või millele tegema local deliverit

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'ikile vastav andmebaas moodustada käsuga

 # postmap /etc/postfix/generic

ning laadida reload'iga Postfix.

Käskuga postconf estitatakse parasjagu kehtetatud Posfixi seadistused

 # postconf

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

 # postconf -n

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

 # postconf mail_version
 mail_version = 2.5.5

Kasutamine

Aliase olemasolu kontrollimiseks sobib öelda

 # postmap -q mart@loomaaed.tartu.ee pgsql:/etc/postfix/pgsql-local.cf

Kirjade sabast ära saatmiseks

 # postqueue -f

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.

Logi ja debugimine

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.

 # 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

Spämmi tõrjumine Postfixi sisemiste vahenditega

Näiteks sobib kasutada sellist parameetrit selliste väärtustega

 smtpd_client_restrictions = check_client_access hash:/etc/postfix/client_access,
  reject_unknown_sender_domain, permit_mynetworks, reject_unauth_destination,
  reject_rbl_client bl.spamcop.net,
  reject_rbl_client cn-kr.blackholes.us,
  reject_rbl_client nigeria.blackholes.us,
  reject_rbl_client argentina.blackholes.us,
  reject_rbl_client proxies.blackholes.easynet.nl 


Postisüsteemi testimine

TODO

Jõudlus

TODO

Spam

Aadressil http://spamassassin.apache.org/gtube/ on nö standard spammi, 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 reane 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.

Amavis

Amavis http://www.ijs.si/software/amavisd/ tarkvara võimaldab postisüsteemi, nt Postfix, ühendada väliste teenustega ja nende väliste teenuste kasutamist juhtida. Hästi levinud on kasutada Amavisi juhtimisel sellist analüüsi teostavat tarkvara

  • ClamAV - viiruste analüüsi tarkvara
  • Spamassassin - spami analüüsi tarkvara

Amavis tarkvara kasutamist kirjeldab aadressil http://kuutorvaja.eenet.ee/wiki/Amavis_kasutamine_Debian_Lenniga asuv tekst.


IMAP kliendid

IMAP klientprogrammid on tavaliselt need programmid mida postisüsteemi kasutaja kasutab saabunud kirjadede lugemiseks. Reeglina kasutaja kasutab neid ka kirjade saatmiseks kuigi kirja saatmine ja lugemine on kaks suhteliselt sõltumatut tegevust tehnilises mõttes.

Icedove

Üsna levinud graafilise kasutajaliidesega postivahetusprogramm, oskab olla muu hulgas IMAPi klient.

Lisaks on võimalik paigaldada OpenPG kasutamiseks Enigmail laiendus öeldes

 # apt-get install enigmail

Pine

Üsna levinud nn pseudograafiline postivahetusprogramm, oskab olla muu hulgas IMAPi klient.


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 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

 # apt-get instal spfqtool

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.

Üheks SPF kasutamise võimaluseks on sama MTA sees pidada Postfixi master deemoni poolt käivitatavat Perli skripti, mida jagatakse postfix-policyd-spf-perl paketina, paigaldamiseks tuleb öelda

 # apt-get install postfix-policyd-spf-perl

Nimesüsteemi ettevalmistamine

TODO


Milter

TODO

Märkused

  • abiks pisike programm mail, paketist mailx (mis tegelikult paigaldab sõltuvusena paketi bsd-mailx)

Kasulikud lisamaterjalid