Erinevus lehekülje "Postfix" redaktsioonide vahel
245. rida: | 245. rida: | ||
− | transports | + | ====transports==== |
The optional transport(5) table specifies a mapping from | The optional transport(5) table specifies a mapping from | ||
270. rida: | 270. rida: | ||
restart postfix and now every e-mail sent to example.com will relay through your specified e-mail server. | restart postfix and now every e-mail sent to example.com will relay through your specified e-mail server. | ||
+ | ====Kirjade töötlemine välise programmiga transport maps abil==== | ||
− | SMTP communication control | + | Ü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. | ||
+ | |||
+ | ====SMTP communication control==== | ||
access | access | ||
412. rida: | 440. rida: | ||
*postlog | *postlog | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
===Logi ja probleemidega tegelemine=== | ===Logi ja probleemidega tegelemine=== |
Redaktsioon: 22. detsember 2008, kell 18:57
Sisukord
Sissejuhatus
Postfix on vabavaraline mail transfre agent (MTA), serveritarkvara mis mõeldud 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.
Anatoomia
Kitsam pilt MTA'st. Tegemist ei ole mingi väikese tarkvaraga. Kokku koosneb postfix kuskil 11'nest põhilisest käsurea utiliidist ja 20nest protsessist/deemonist.
Kollased märgid on mail programmid neist kastid on maili järjekorrad (queue) või failid
sinised kastid on lookup table'd
programmid üldkasti sees töötavad kontrollituna postfixi master daemoni poolt info selle sees kuulub samuti postfixi mailisüsteemile
Kuna deemoneid on äärmiselt palju ja nende kõigi esiletoomine võtaks palju aega siis kõige olulisemad deemonid on
- master
The master daemon is the brain of the Postfix mail system. It spawns all other daemons.
- 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.
Kirjade töötlemine välise programmiga transport maps abil
Ü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.
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
Imap deemonid
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 keskmiste suurustega 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.
Viirusetõrje/spam
clamav, amavisd, postgrey jpt
Amavis
Põhimõtteliselt Amavis tarkvara iseseisvalt sisulist lisaväärtust postisüsteemile ei paku, aga ta võimaldab ühendada Postfix'i kokku väliste teenustega, näiteks viiruste analüüsi tarkvaraga ClamAV.
Amavis nimeks enamuse operatsioonisüsteemide tarkvarakogumikes on amavisd-new
Vaikeseadistustega Amavis sobib kasutamiseks Amavis kuulab soketil 127.0.0.1:10024 Amavis pöördub MTA poole aadressile 127.0.0.1:10025
Selleks, et Postfix kõik talle laekunud posti saadaks läbi Amavisi peab lisama main.cf faili rea
content_filter=amavisfeed:[127.0.0.1]:10024
ning faili master.cf lisama sektsioonid
amavisfeed unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o smtp_tls_note_starttls_offer=no 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o smtpd_restriction_classes= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters -o local_header_rewrite_clients= -o smtpd_milters= -o local_recipient_maps= -o relay_recipient_maps=
ClamAV
ClamAV on vaba tarkvaraline viirustõrjeprogramm, mille kasutamisel tarvitatakse ClamAV tasuta viiruste kontrolli andmebaasi teenust. Tavaliselt kutsub Postfix ClamAV välja Amavise abil.
Vaikeseadistustega ClamAV sobib kasutamiseks.
Sõltuvalt operatsioonisüsteemist on võibolla vajalik amavisd seadistuses clamav kasutamist lubavate ridade lahtikommenteerimine.
Postfixi olulised tööriistad
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
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 õ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
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
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