Aneb jak sobě mail server udělati.
Začneme odinstalací sendmailu
rpm -e sendmail
pokud se mu nechce pryč pomůže parametr --nodeps
a pokud hlásí error: "sendmail" specifies multiple packages
znamená to, že máte 64b systém a je potřeba přesněji specifikovat název balíčku
rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}n' sendmail
vrátí
sendmail-8.14.2-1.fc8.x86_64
sendmail-8.14.2-1.fc8.i386
ted víme jak se zbavit té príšery
rpm -e --nodeps sendmail-8.14.2-1.fc8.x86_64 sendmail-8.14.2-1.fc8.i386
a naistalujeme postfix
yum install postfix
a upravime soubor vi /etc/postfix/main.cf
pro nás jsou zajímavé tyto parametry:
myhostname = host.domain.tld
mydomain = domain.tld
myorigin = $myhostname
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
mail.$mydomain, www.$mydomain, ftp.$mydomain
mynetworks = 192.168.1.0/24, 127.0.0.0/8
home_mailbox = Maildir/
nainstalujeme antivir
yum install clamav clamav-update
v souboru
vi /etc/sysconfig/freshclam
odstraňte nebo zakomentujte řádek
#FRESHCLAM_DELAY=disabled-warn # REMOVE ME
v souboru
vi /etc/freshclam.conf
zakomentujte řádek
#Example
a upravte parametr kde bude uložena databáze
DatabaseDirectory /var/lib/clamav
v souboru
vi /etc/cron.d/clamav-update
nastavte email kam budou chodit oznámení o aktualizaci databáze ClamAV a případně změňte četnost aktualizace
a nechte aktualizovat databázi
/usr/bin/freshclam
Zkontrolujeme zda máme instalovaný Spamassassin
rpm -q spamassassin
pokud ne naistalujeme příkazem
yum install spamassassin
spustíme
/etc/init.d/spamassassin start
a přidáme do spuštění po startu počítače
chkconfig --level 3 spamassassin on
Instalace Sagator
vytvořte soubor sagator.repo
>> /etc/yum.repos.d/sagator.repo
a vložte do něj konfiguraci yum repository
vi /etc/yum.repos.d/sagator.repo
[sagator]
name=Fedora Core $releasever - $basearch - Sagator
baseurl=http://www.salstar.sk/pub/sagator/fedora/$releasever/$basearch
enabled=1
gpgcheck=0
[sagator-test]
name=Fedora Core $releasever - $basearch - Sagator - testing
baseurl=http://www.salstar.sk/pub/sagator/fedora/testing/$releasever/$basearch
enabled=0
gpgcheck=0
exclude=*exp*
ted je možné instalovat pomocí yum sagator a zároven jej budeme mít aktualizovaný
yum install sagator sagator-libclamav
Odzálohujte konfigaracní soubor sagatoru a použijte mojí konfiguraci, která viry tiše strká do karantény, znackuje spamy pomocí jedné spamassassin databáze, píše do subjectu mailu [Spam] a príslušný pocet *** podle hodnocení a spamy s vysokým hodnocením rovnou zahazuje.
mv /etc/sagator.conf /etc/sagator.conf.zaloha
>> /etc/sagator.conf
vi /etc/sagator.conf
--- cut ---
## Sagator unnoficial configuration file, modified by David Zejda.
## Most of original comments are deleted - please consult the sagator.conf,
## that comes with your Sagator distribution..
from avlib import *
from scanners import *
from srv import *
## Which mails are considered spam; should be the same as the
## required_hits in spamassassin config.
## Should be declared even in case you don't use the variable in
## your config - it's needed by sagator internal scanners like
## "rewrite".
SPAM_TRESHOLD=4.0
## Rewrites the name of spam to something more useful..
## Used in antispam scanner chains below..
class rewrite_name(rename):
name='rewrite_name()';
def scanstream(self,stream):
level,detected,virlist=match_any.scanstream(self,stream)
## Clean messages leave untouched
if not is_infected(level,detected):
return level,detected,virlist
## These replace variables may be used in new virname definition..
repl_vars={
'VNAME': detected,
'LEVEL': str(level),
'STARS': '*'*int(level*SPAM_TRESHOLD),
}
## The "detected" is modified, others left unchanged..
return level,replace_tmpl(self.NEWNAME,repl_vars),virlist
## Custom definition of quarantine report message.
## Dozens of predefined replace variables may be used here..
REPORT_MSG='''
From: $FROM
To: $TO
Subject: Do vasi schranky smeroval virus $VIRNAME!
Reply-To: muj-mail@example.net
VIRUS NALEZEN A PRESUNUT DO KARANTENY!
---------------------------------------------------------------------
Do vasi e-mailove schranky smerovala zprava, ktera v priloze
obsahovala virus. Nebezpecnou prilohu jsme odstranili a presunuli
do karanteny na nasem postovnim serveru. Pokud jste si jisti, ze si
prejete *nebezpecnou* prilohu dostat, prosim preposlete tuto zpravu
na adresu jelen@jeje.cz a my vam ji zahy vratime.
---------------------------------------------------------------------
STATUS: $STATUS
ULOZENO DO KARANTENY JAKO: $QNAME
---------------------------------------------------------------------
SMTP KOMUNIKACE:
$SMTP_COMM
---------------------------------------------------------------------
HLAVICKA ZPRAVY:
$MSG_HEADER
---------------------------------------------------------------------
SKENER: $SCANNER_NAME
$SCANNER_OUTPUT
'''
## Debugging level, 0=errors only, 1=return status, init messages,
## 2=smtp server communication, 3=detailed smtp server communication,
## 4=tracebacks, 5=smtp client communication
DEBUG_LEVEL=3
## System settings - Debian standard config
CHROOT='/var/spool/vscan'
LOGFILE=CHROOT+'/var/log/sagator/sagator.log'
USER,GROUP='vscan','vscan'
SMTP_SERVER=('127.0.0.1',26)
## Classes of mails according to infection, may be used in the following
## scanner configs; unused classes are commented out.
DROP_INFECTED='.'
# DROP_SELECTED='(worm|@mm|Sobig|Klez|Bugbear|Gibe|Swen|Mimail|Sober|Bagle|Mydoom|Novarg|Lirva)'
# DROP_NOTHING='dasfadsffad'
# DROP_EVERYTHING=''
SCANNERS=[
log(3,log.FORMAT,
status("Virus",
report(['root@localhost'],report.MSG_TMPL,
quarantine('/tmp/quarantine/%Y%m','',
drop(DROP_INFECTED,
# time_limit(900,
# clamd(['localhost',3310]),
# clamd('/var/run/clamav/clamd.sock'),
# buffer2mbox(libclam(limits={'maxratio':9999})),
buffer2mbox(libclam(limits={'maxratio': 9999},db_options=libclam.CL_DB_PHISHING)),
# )
)
)
)
),
status("Spam",
rename('',
cache('t',
spamassassind(['127.0.0.1',783])
) * const(0.0)
),
drop('.',
rename('$STARS',
cache('t')>=const(3)
)
),
deliver(
modify_subject('[%V]',
rewrite_name('$VNAME $STARS',
cache('t')
)
)
)
)
)
]
SRV=[
collector('127.0.0.1',28),
smtpd(SCANNERS,'127.0.0.1',27)
]
--- cut --
Přidejte na konec souboru
vi /etc/postfix/main.cf
#begin: sagator
content_filter=smtp:[127.0.0.1]:27
#end: sagator
vi /etc/postfix/master.cf
#begin: sagator
127.0.0.1:26 inet n - n - 30 smtpd
-o content_filter=
-o myhostname=sagator.host.domain.tld
-o local_recipient_maps= -o relay_recipient_maps=
-o mynetworks=127.0.0.0/8 -o mynetworks_style=host
-o smtpd_restriction_classes= -o smtpd_client_restrictions=
-o smtpd_helo_restrictions= -o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
#end: sagator
Přesuňte adresář clamav do chrootu sagatora a vytvořte link
mkdir -p /var/spool/vscan/var/lib/
mv /var/lib/clamav /var/spool/vscan/var/lib/
ln -s /var/spool/vscan/var/lib/clamav /var/lib/clamav
Pustíme sagator a postfix a přidáme do spuštění po startu.
pokud sagator beží ukončete jej
ps axf |grep sagator
29565 pts/4 S 0:02 /usr/bin/python /usr/sbin/sagator
29566 pts/4 S 0:00 _ /usr/bin/python /usr/sbin/sagator
29569 pts/4 S 0:00 _ /usr/bin/python /usr/sbin/sagator
29570 pts/4 S 0:00 _ /usr/bin/python /usr/sbin/sagator
/etc/init.d/sagator stop
a ješte jednou zkontrolujte zda neběží, případně ho zavražděte
/etc/init.d/sagator start
/etc/init.d/postfix start
chkconfig --level 3 postfix on
chkconfig --level 3 sagator on
Dejte si pozor na SELinux, pokud je zaplý a nemáte jej nakonfigurovaný může se vám objevit nepěkná hláška
fatal: bind 127.0.0.1 port 26: Permission denied
a nenaběhne vám postfix
Vytvořte adresář pro databázi spamassassinu a změňte vlastníka.
mkdir /var/spool/vscan/.spamassassin
chown vscan:vscan /var/spool/vscan/.spamassassin
Já si nechávám posílat maily pro root-a na svůj email, to uděláte editací
vi /etc/aliases
najděte řádek začínající #root: a změňte
root: muj-mail@examle.net
Nezapomeňte příkazem newaliases znovu vytvořit databázi pro postfix.
Teď prišla správná chvíle na to odeslat testovací mail
echo "testovaci zprava" |mail -s 'testovaci email' root
Pokud zpráva dorazila máme hotový mailserer a můžeme zpřístupnit maily uživatelům přes POP3 a IMAP4 protokol pomocí Dovecot
yum install dovecot
Povolte protokoly které chcete provozovat
protocols = imap imaps pop3 pop3s
Pokud používáte Outlook asi budete chtít zapnout workarounds (Jak tohle přeložit?)
imap_client_workarounds = outlook-idle
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
Spusťte Dovecot a přidejte do spuštění po startu.
/etc/init.d/dovecot start
chkconfig --level 3 dovecot on
Tímto jsme zprovoznili poslední část našeho mailserveru a můžeme jít na pivo.
Použité zdroje
www.salstar.sk/sagator/
www.root.cz/serialy/sagator/