Labor2 E-post
Legend
Ver. 0.00, 03.11.2009
Ver. 0.01, 14.12.2009
Tegijad
Sander Surva
Ken Karma
Lauri Võsandi
Sissejuhatus
Meil on kaks domeeni, kus on mailiserverid ja osapooled saavad omavahel e-posti teel suhelda. ssurva.ee ja kkarma.ee. kkarma.ee peale on seadistatud nii spämmifilter kui ja viirusetõrje sissetulevate mailide jaoks. Mõlemad domeenid samas logivad logiteateid eraldi faili.
Nõuded
- domeenid kkarma ja ssurva
- d1 viirusetõrjega
- d1 spammifilter
- logima syslog-i + eraldi faili
+----+ +----+ | D1 | ------> | D2 | +----+ +----+
Eeldused
Operatsioonisüsteemiks peab olema Ubuntu Server, mis jookseb kernelil 2.6.28-11
Enne vaja seadistada DNS
kasutame BIND-i, põhjalikuma leheküle leiab: [1]
apt-get install bind9
kohalikud domeenid kkarma ja ssurva paigutame faili /etc/bind/named.conf.local
zone "x.168.192.in-addr.arpa" IN { type master; file "/etc/bind/db.x.168.192.in-addr.arpa"; }; zone "ssurva.ee" IN { type master; file "/etc/bind/db.ssurva.ee"; }; zone "kkarma.ee" IN { type master; file "/etc/bind/db.kkarma.ee";
nano /etc/bind/db.ssurva.ee nano /etc/bind/db.kkarma.ee
Nende failide sisu muuta järgmiselt
; ; BIND data file for ssurva.ee ; $ORIGIN ssurva.ee. $TTL 604800 @ IN SOA ns.ssurva.ee. root.ssurva.ee. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; ssurva.ee. IN NS ns.ssurva.ee. ssurva.ee. IN MX 10 mail.ssurva.ee. ns.ssurva.ee. IN A 192.168.x.x mail.ssurva.ee. IN A 192.168.x.x www.ssurva.ee. IN CNAME ssurva.ee. ssurva.ee. IN A 192.168.x.x
; ; BIND data file for kkarma.ee ; $ORIGIN kkarma.ee. $TTL 604800 @ IN SOA ns.kkarma.ee. root.too.ee. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; kkarma.ee. IN NS ns.kkarma.ee. kkarma.ee. IN MX 10 mail.kkarma.ee. ns.kkarma.ee. IN A 192.168.x.x mail.kkarma.ee. IN A 192.168.x. www.kkarma.ee. IN CNAME kkarma.ee. kkarma.ee. IN A 192.168.x.x
E-posti tarkvara paigaldus
Kõik installeerimised on tehtud root kasutaja alt, kui toiminguid tehakse mõne muu kasutaja alt siis tuleb iga käsu ette lisada sudo !
MTA ehk Mail Transfer Agent on Postfix:
apt-get install postfix
Rämpspostifilter SpamAssassin:
apt-get install spamassassin
Antiviirus ClamSMTP:
apt-get install clamsmtp
MDA ehk Mail Delivery Agent on Courier:
apt-get install courier-imap
SASL autentimiseks:
apt-get install libsasl2-2 sasl2-bin
Kirjade vastuvõtmine
Postfix kuulab pordil 25 ning saadab kirjad edasi 10030 pordile, kus ClamSMTP teeb viirusetõrjet. Peale seda ClamSMTP saadab need edasi 10025 pordile, kus Postfix nad uuesti vastu võtab ja teeb rämpsposti filtreerimist. Kirjad mis on läbinud sellise ahela paigutatakse ~/Maildir alla.
Postfix
Postfix võtab vastu posti ka väljastpoolt ning salvestab vaikmisi /var/mail alla, selleks et kasutada uuemat Maildir formaati, mille korral paigutatakse kirjad ~/Maildir alla, ava /etc/postfix/main.cf ja lisa sinna:
home_mailbox = Maildir/
Peale seda ava Postfixi peamine seadistusfail /etc/postfix/master.cf ja tee kindlaks et seal on sellised read:
smtp inet n - - - - smtpd # Kuula pordil 25 -o content_filter=clamav:127.0.0.1:10030 # Saada edasi kohaliku masia pordile 10030 10025 inet n - - - - smtpd # Kuula pordil 10025 -o content_filter=spamassassin # Saada läbi SpamAssassini UNIX socketi (vt allpool) smtps inet n - - - - smtpd # Kuula TLS'iga krüpteeritud ühendusi pordil 465 -o smtpd_sasl_auth_enable=yes # Luba autentimine läbi SASL+PAM
Sama faili lõppu tuleks veel lisada filtri definitsioon:
spamassassin unix - n n - - pipe user=nobody argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient} clamav unix - - n - 16 smtp -o smtp_send_xforward_command=yes
Peale seadistuste muutmist tuleks Postfix'i deemon uuesti laadida:
/etc/init.d/postfix reload
SASL seadistamine
Tuleb lisada kasutaja postfix gruppi sasl:
sudo adduser postfix sasl
Ava /etc/postfix/sasl/smtpd.conf:
pwcheck_method: saslauthd saslauthd_path: /etc/mux mech_list: login plain
Ava SASL seadistuste fail: /etc/default/saslauthd:
START=yes MECHANISMS="pam" OPTIONS="-c -m /var/spool/postfix/etc"
Peale seda tuleks SASL teenus taaskäivitada:
sudo /etc/init.d/saslauthd restart
ClamSMTP seadistamine
Ava /etc/clamsmtpd.conf ja muuda selle sisu selliseks
# Port kuhu edasi suunata meilid OutAddress: 10025 # Kuula SMTP ühendusi kohaliku masina pordil 10030 Listen: 127.0.0.1:10030 # ClamAV deemon laetakse üks kord mällu ning ta kuulab clamd.ctl UNIX socketil # ClamSMTPD on lihtsalt üks ClamAV deemoni "klientidest" mis ühendub sinna socketisse # Iga meili jaoks ClavAV andmebaasi laadimine oleks lihtsalt väga aeglane ClamAddress: /var/run/clamav/clamd.ctl # Kasutaja kellena ClamSMTPD jookseb User: clamsmtp TempDirectory: /var/spool/clamsmtp PidFile: /var/run/clamsmtp/clamsmtpd.pid #MaxConnections: 64 #TimeOut: 180 #Header: X-AV-Checked: ClamAV using ClamSMTP #Bounce: off #Quarantine: off #TransparentProxy: off
Peale seadistuste muutmist tuleks ClamSMTP deemon uuesti laadida:
/etc/init.d/clamsmtp reload
SpamAssassin
SpamAssassin'it eraldi seadistada ei ole vaja. Tasub vaid teada et pordil 783 kuulab SpamAssassin'i deemon, mille kaudu saab suvalist teksti filtreerida. Postfix kutsub välja käsurearakendust spamc, mis ühendub nimetatud pordile ning filtreerib kirju. Deemoni kinnipanemiseks või käivitamiseks võib kasutada käsku:
/etc/init.d/spamassassin start|stop
Testimine
Saatmine SMTP'ga
Selleks, et oleks lihtne testida teeme sellise faili, mille sisuks on:
Pythoni rakendus e-posti saatmiseks:
import smtplib fromaddr = "[saatja@aadress]" toaddrs = "[siht@aadress]" msg = "[Sõnumisisu]?\n" server = smtplib.SMTP('localhost') server.sendmail(fromaddr, toaddrs, msg) server.quit()
Seejärel käivitame selle meili saatmse:
python <eelpool loodud faili nimi>
Lugemine IMAP'iga
Järgnev Python programm püüab kohalikku masinasse sisse logida IMAP kaudu ning püüab tõmmata viimast e-kirja. Samas kontrollib, kas e-kirjale tehti viirusetõrjet ning rämpspostikontrolli
# -*- coding: utf-8 -*- import getpass, imaplib, sys def main(): M = imaplib.IMAP4("localhost", 143) print "Username: ", username = sys.stdin.readline().strip() password = getpass.getpass() M.login(username, password) status, value = M.select() if status != "OK": print "Failed to log in" return mails = value[0] status, data = M.fetch( mails,'(RFC822)') if status != "OK": print "Failed to fetch mail!" return content = data[0][1] print content print "\nConclusion:" if "X-Virus-Scanned: ClamAV using ClamSMTP" in content: print "* Virus scan performed" else: print "* NO Virus scan performed!!!" if "X-Spam-Checker-Version: SpamAssassin" in content: print "* Spam check performed" else: print "* NO Spam check performed!!!" M.close() M.logout() main()
Varundamine
Varundada tuleb kõik seadistusfailid, mida muudeti:
/etc/postfix/main.cf
/etc/postfix/master.cf
/etc/default/spamassassin
/etc/clamsmtpd.conf
postfix, spamassassini ja clamsmtpd confi varundamine
tar -cf /etc/postfix/* tar -cf /etc/default/spamassassin tar -cf /etc/clamsmtpd.conf
taastamine
postfixi backup taastada kataloogi /etc/postfix/
tar -xf postfix_mm_dd_yyyy.tar /etc/postfix/
spamassassini backup taastada kataloogi /etc/default/spamassassin
tar -xf spamassassin.tar
clamsmtp conf taastada kataloogi /etc/ failinimi clamstmpd.conf
tar -xf clamsmtpd.tar