Kahetasemelise Postfix'i süsteemi kasutamine Debianiga
Sisukord
Sissejuhatus
Turvalisuse, jõudluse või lihtsalt süsteemi modulaarsuse asjaoludest lähtudes seadistakse vahel Postfix süsteemi käima kahetasemeliselt, nö kahel perimeetril, kusuures kõige ees saab täiendavalt pidada greylistingut.
- greylisting - esimene perimeeter
- relee - teine perimeeter, internetist smtp ühenduste vastuvõtmine, adressaadikontroll, viirustõrje ning spämmianalüüs
- delivery - kolmas perimeeer, kirjade postkastidesse jagamine ja aliaste alusel edasisaatmine, listimootorid
internet | __|__ | | | TM | OpenBSD spamd (greylisting) |_____| | | ----|--------|-----------------------------------|------ | | __|__ __|__ | | | | |_____| |_____| RELEE-MTA1 DELIVERY-MTA2 ClamAV @lists.loomaaeed.tartu.ee listid Spamassassin @loomaaed.tartu.ee postkastid
Relee seadistamine
Relee arvuti võtab kirjad internetist vastu, aga ei teosta nendega local deliverit, vaid peale adressaadikontrolli ning viiruse ja spämmi kontrolle saadab edasi delivery arvutile.
Adressaadikontroll
Kahetasemelise Postfixi süsteemi puhul on oluline, et relee kontrolliks vastuvõetud kirja adressaati selleks, et saaks sama smtp sessiooni sees anda vajadusel smtp kliendile 550 veateate 'Recipient address rejected: User unknown in relay recipient table'. Vastasel korral võtab relee olematu adressaadile saadetud kirja vastu, pöördub delivery arvuti poole, saab sealt ise 550 teate ja saadab tema poole algselt pöördunud kasutaja envelope aadressil uue kirja veateatega. Kuna aga väga suure tõenäosusega on olematule adressaadile saadetud kiri võltsitud ümbriku aadressidega, siis raiskab postisüsteem asjata oma ressurssi ning risustab internetti järjekordse mõttetu kirjaga, efektiivselt ise spämmi tekitades. Sellise järgnevuse tulemusel saadetud veateate kohta öeldakse "backscatter".
Adressaati saab kontrollida relee arvutis relay_recipient_maps direktiiviga, nt selliselt
relay_recipient_maps = hash:/etc/postfix/relay_recipients pgsql:/etc/postfix/relay_recipients-pgsql
kus fail /etc/postfix/relay_recipients-txt sisaldab adressaatide või domeeninimede nimekirja, nt
mart@loomaaed.tartu.ee priit@loomaaed.tartu.ee @test.loomaaed.tartu.ee
baasi genereerimiseks tuleb öelda
# postmap /etc/postfix/relay_recipients-txt
/etc/postfix/relay_recipients-pgsql sisaldab baasi ühenduse kirjeldust, nt
user = cyrus_auth password = parool hosts = baas.looomaaed.tartu.ee dbname = postisysteem table = tla.cyrus_auth select_field = rcpt where_field = alias
Kas adressaat on kontrollitav saab testida öeldes
# postmap -q mart@loomaaed.tartu.ee pgsql:/etc/postfix/relay_recipients-pgsql mart@cyrus.tla
Olematu aadressi küsimisel ei anta vastust ning exit code on 1.
Logis paistab, et andmevahetus kliendiga lõpetati enne kirja sappa võtmist, NOQUEUE (ingl. k. mitte sappa lisatud)
Jul 8 19:54:09 smtp1a postfix/smtpd[15869]: NOQUEUE: reject: RCPT from vmail.sone.ee[192.168.5.205]: \ 550 5.1.1 <tonn.saadre@loomaaed.tartu.ee>: Recipient address rejected: User unknown in relay recipient table; \ from=<tiiterror@bmail.com> to=<tonn.saadre@loomaaed.tartu.ee> proto=ESMTP helo=<vmail.sone.ee
Viiruste ja spämmi analüüs
Viirute ja spämmi analüüsi saab relee arvutis korraldada tarkvaraga Amavis, ClamAV ja Spamassassin nii nagu on juhatatud tekstis http://kuutorvaja.eenet.ee/wiki/Amavis_kasutamine_Debian_Lenniga
SMTP ruuting
Nn SMTP ruutingu abil saadab relee vastuvõetud posti edasi delivery arvutile. /etc/postfix/main.cf failis tuleb smtp ruutingu tegemiseks kasutada selliseid direktiive
relay_domains = loomaaed.tartu.ee transport_maps = hash:/etc/postfix/transport
ja transport map failis rida
loomaaed.tartu.ee :[localdelivery.loomaaed.tartu.ee]
map'i moodustamiseks öelda
# postmap /etc/postfix/transport
tulemusena tekib faili
# file /etc/postfix/transport.db /etc/postfix/transport.db: Berkeley DB (Hash, version 9, native byte-order)
Delivery seadistamine
Delivery arvuti võtab kirju vastu ainult relee arvutilt ning teostab local delivery või saadab kirjad edasi vastavalt aliaste lahendumisele.
main.cf failis sisaldub mydestination real domeeninimi
mydestination = localhost, loomaaed.tartu.ee