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

Allikas: Kuutõrvaja
(Aadressiklassid)
(Aadressiklassid)
9. rida: 9. rida:
 
Vaikimisi on 2009 aastal Postfixis kasutusel sellised aadressklassid
 
Vaikimisi on 2009 aastal Postfixis kasutusel sellised aadressklassid
  
* local domain class  
+
* local domain class - canonical domains
* virtual alias domain class
+
* virtual alias domain class - hosted domains
* virtual mailbox domain class
+
* virtual mailbox domain class - hosted domains
* relay domain class
+
* relay domain class - relay domains
 
* default domain class
 
* default domain class
  

Redaktsioon: 8. august 2009, kell 13:26

Aadressiklassid

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

  • 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

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.

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

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

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

Kasutamine

Aliase olemasolu kontrollimiseks sobib öelda

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

Kirjade sabast ära saatmiseks

 # postqueue -f

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

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

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