|
|
(ei näidata 3 kasutaja 46 vahepealset redaktsiooni) |
1. rida: |
1. rida: |
| ===Sissejuhatus=== | | ===Sissejuhatus=== |
| | | |
− | Postfix on vabavaraline mail transfre agent (MTA), serveritarkvara mis mõeldud | + | Postfix on postiedastusagent (ingl. k. mail transport agent, MTA). Postiedastusagendi ülesanne on sooritada kontrolle, võtta epost vastu võrgust või lokaalselt ja anda edasi |
− | emailide vastuvõtmiseks ning saatmiseks. Postfixi kiirus, kergelt administreeritavus ja turvalisus
| |
− | on teinud sellest ühe enimkasutatava mta ja laialdase alternatiivi sendmailile.
| |
| | | |
− | Selle kirjutas hollandlane Wietse Venema ja kasutusse võeti esmakordselt 1999.a.
| + | * postijaotusagendile (ingl. k. mail delivery agent, MDA) kirjade kasutajate postkastidesse jaotamiseks või kopeerida ise failisüsteemi |
| + | * järgmisele postiedastusagendile |
| + | * viiruste ja spämmi analüüsi süsteemile |
| | | |
− | ===Anatoomia===
| + | Postiedastusagent on epostisüsteemi keskne komponent, mis ühendab kokku kõik eposti liikumisega toimuvad tegevused |
| | | |
− | Kitsam pilt MTA'st. Tegemist ei ole mingi väikese tarkvaraga. Kokku koosneb postfix kuskil 11'nest põhilisest
| + | internet (teised MTA'd) |
− | käsurea utiliidist ja 20nest protsessist/deemonist.
| + | |
| + | | ^ |
| + | v | |
| + | _____ |
| + | spämmi ja <----> | | <---- lokaalne meilisaatja (nn /usr/sbin/sendmail STDIO) |
| + | viiruste analüüs | MTA | <---- MTA klient, nt Icedove või Thunderbird |
| + | |_____| ----> postijaotusagent nt Cyrus või lihtsamal juhul kopeeritakse |
| + | kiri faili /var/mail/kasutajanimilinefail |
| | | |
− | [[Pilt:Psfxcomn.gif]]
| + | Kuutõrvajas on käsitletud seoses Postfixi kasutamisega selliseid teemasid |
| | | |
− | Kollased märgid on mail programmid neist kastid on maili järjekorrad (queue) või failid
| + | * [[:Mailman kasutamine FreeBSD'ga]] |
− | | + | * [[:Cyrus kasutamine Gentooga]] |
− | sinised kastid on lookup table'd
| + | * [[:Postfix'i kasutamine Debianiga]] |
− | | + | * [[:Postfix'i arhitektuuri kirjeldus ja kasutamise keerulisemad võimalused]] |
− | programmid üldkasti sees töötavad kontrollituna postfixi master daemoni poolt
| + | * [[:Kahetasemelise Postfix'i süsteemi kasutamine Debianiga]] |
− | info selle sees kuulub samuti postfixi mailisüsteemile
| + | * [[:Cyruse kasutamine Postfixi ja Debianiga]] |
− | | + | * [[:Mailmani kasutamine Postfixi ja Debianiga]] |
− | Kuna deemoneid on äärmiselt palju ja nende kõigi esiletoomine võtaks palju aega siis
| + | * [[:Sympa kasutamine Postfixi ja Debianiga]] |
− | kõige olulisemad deemonid on
| + | * [[:Amavis kasutamine Debian Lenniga]] |
− | | + | * [[:Postfix'i SMTP AUTH üle TLS vastu Postgresql baasi Debianiga]] |
− | *master | + | * [[:Opportunistic encryption kasutamine Postfixiga]] |
− | The master daemon is the brain of the Postfix mail system.
| + | * [[:Squirrelmail kasutamine Debian Lennyga]] |
− | It spawns all other daemons.
| + | * [[Postfix + courier + mysql]] FreeBSD postfix mailisüsteem koos mysql'is olevate kasutajate ning veebihaldusliidesega paigaldusõpetus |
− | | + | * [[:SPF kasutamine Postfixiga]] |
− | *smtpd | |
− | The smtpd daemon (server) handles incoming
| |
− | connections.
| |
− | | |
− | *smtp
| |
− | The smtp client handles outgoing connections.
| |
− | | |
− | *qmgr
| |
− | The qmgr-Daemon is the heart of the Postfix mail system.
| |
− | It processes and controls all messages in the mail queues.
| |
− | | |
− | *local | |
− | The local program is Postfix’ own local delivery agent. It
| |
− | stores messages in mailboxes.
| |
− | | |
− | Posfixil on 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 defferred järjekorda ,et see ei jääks
| |
− | saabuvatele-saadetavatele kirjadele jalgu.
| |
− | | |
− | '''Kaustad'''
| |
− | | |
− | Peamisteks postfixi kaustadeks on
| |
− | | |
− | /etc/postfix (/ust/local/etc/postfix BSD's) kus asuvad seadistusfailid ja tabelid aadressidega
| |
− | | |
− | /usr/libexec/postfix postfixi deemonid
| |
− | | |
− | /var/spool/postfix järjekorra (queue) failid
| |
− | | |
− | /usr/sbin postfixi käsud
| |
− | | |
− | Pisut detailsemat juttu http://www.linuxjournal.com/article/9454
| |
− | | |
− | ===Paigaldus===
| |
− | | |
− | Üldiselt 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
| |
− | | |
− | ===Seadistus===
| |
− | | |
− | Postfixi põhilisteks seadistusfailideks on '''main.cf''' ja '''master.cf'''. Main.cf sisaldab | |
− | postfixi seadistusparameetreid mis vajalikud mailide liigutamiseks ning master.cf seadistab deemonprotsesse
| |
− | | |
− | ====Main.cf====
| |
− | | |
− | 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, /usr/local/etc/postfix/mydestination
| |
− | unknown_local_recipient_reject_code = 550
| |
− | alias_maps = hash:/etc/mail/aliases
| |
− | alias_database = hash:/etc/mail/aliases
| |
− | relay_domains = $mydestination, /etc/postfix/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
| |
− | omasuudu, näiteks kus asub deemon, kus spool kaust või mis õigustes töötab postfix
| |
− | | |
− | Kasutada võib ka muutujaid stiilis config_directory = /usr/local/etc/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 serveri taguse 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
| |
− | | |
− | '''mydestination = $myhostname, localhost.$mydomain, /usr/local/etc/postfix/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ülgevõtta
| |
− | | |
− | /usr/local/etc/postfix/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 programmine, näit
| |
− | cyrusele mailbox_transport = cyrus
| |
− | | |
− | '''smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain'''
| |
− | | |
− | Piirangud läbi mailiserveri saatjale, lubame automaatselt mynetworgist 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
| |
− | | |
− | ====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 ametlikuls postconf manualis http://www.postfix.org/postconf.5.html aga püüaks veel mõningaid ja põhiliselt spamimise /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'''
| |
− | | |
− | | |
− | ====Teised konfiguratsioonifailid====
| |
− | | |
− | virtual
| |
− | | |
− | Sarnane alias failile mida kasutatakse lokaalseks
| |
− | failide transportimiseks kuid laialdasemate võimalustega.
| |
− | | |
− | näiteks
| |
− | | |
− | | |
− | postmaste@loomaaed.tartu.eer postmaster
| |
− | info@loomaaed.tartu.ee kasutaja
| |
− | sales@loomaaed.tartu.ee keegi
| |
− | | |
− | | |
− | canonical
| |
− | | |
− | Aadresside sidumine lokaalsete ja mittelokaalsete domeenidega
| |
− | | |
− | | |
− | transports
| |
− | | |
− | The optional transport(5) table specifies a mapping from
| |
− | email addresses to message delivery transports and next-
| |
− | hop destinations. Message delivery transports such as
| |
− | local or smtp are defined in the master.cf file, and next-
| |
− | hop destinations are typically hosts or domain names. The
| |
− | table is searched by the trivial-rewrite(8) daemon.
| |
− | | |
− | 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.
| |
− | | |
− | | |
− | SMTP communication control | |
− | | |
− | access
| |
− | Postfix
| |
− | | |
− | For content control
| |
− | | |
− | header_checks
| |
− | body_checks
| |
− | mime_header_checks
| |
− | nested_header_checks (obscure)
| |
− | | |
− | ===Master.cf===
| |
− | | |
− | Kontrollib kõiki postfixi endapoolt starditavaid teenuseid
| |
− | | |
− | ===Krüpteeringud TLS===
| |
− | | |
− | Kahe mailiserveri vaheline tls krüpteering
| |
− | | |
− | ===Auth SASL===
| |
− | | |
− | Kasutajate autentimine ja kürpteeritud login
| |
− | | |
− | ===Mysql kasutajad===
| |
− | | |
− | postfixadmin
| |
− | | |
− | ===Lisadeemonid viirusetõrje/spam===
| |
− | | |
− | clamav, amavisd, postgrey jpt
| |
− | | |
− | content_filter = smtp-amavis:[127.0.0.1]:10024
| |
− | | |
− | ===Abivahendid===
| |
− | | |
− | Oluliseimad posfixi käsud mida sagedaimini igapäevaelus võib vajaminna on
| |
− | | |
− | *postalias - loob aliase andmebaasi | |
− | | |
− | *postcat - võimaldab vaadata järjekorras olevate fialide sisu | |
− | | |
− | *postmap - loob lookup map'e, suur hulk postfixi konfiguratsiooni informatsiooni hoitakse lookup tabelites.
| |
− | | |
− | *postconf - postfixi parameetrite/seadistuse vaatamine ja muutmine
| |
− | | |
− | konfiguratsiooniooni 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
| |
− | | |
− | | |
− | | |
− | Järjekordadega tegelemisel põhiliseks on muidugi mailq mis võimaldab mugavalt järjekordade sisu jälgida
| |
− | | |
− | 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 }' | tr -d '*!' | postsuper -d -
| |
− | | |
− | Postisüsteemi heaks testimise abivahendiks on ikka telnet muidugi ja telnet port 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.
| |
− | | |
− | ===Logi ja selle analüüs===
| |
− | | |
− | 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
| |
− | | |
− | ===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 arhidektuuri täpsem ülevaade
| |
− | | |
− | http://www.onlamp.com/pub/a/onlamp/2004/01/22/postfix.html postfixi logimisest
| |