Sagator (2)

10. 2. 2005
Doba čtení: 19 minut

Sdílet

Praktičtěji laděné pokračování článku o systému Sagator. Po jeho dočtení a následné realizaci návodů byste měli získat základní funkční kombinaci MTA, Sagatoru, ClamAV a Spamassassinu na jinak funkčním linuxovém stroji.

Možná jste, inspirováni prvním článkem série, zatoužili mít svůj vlastní Sagator. Týden jste čekali na pokračování – a ono nic. Pak ještě týden, pořád nic. Odvážní se pustili do instalace na vlastní pěst … a zjistili, že vlastně o nic nejde. Pár naštvaných, akčněji založených adminů zvolalo apt-get amavis a touto dobou se potýkají s konfigurací a laděním. Pro vás ostatní, kdož jste mě ještě nezatratili, je tady konečně následujících pár řádků – snad se budou hodit..

Instalace

Po dočtení a následné realizaci byste měli získat základní funkční kombinaci MTA (budu popisovat především Postfix), Sagatoru, ClamAV a Spamassassinu na jinak funkčním linuxovém stroji. Zabývat se budu především Debianem, protože na něm mám vše odzkoušeno, SAL mi ale doporučil, abych se alespoň stručně zmínil i o distribucích jiných a taktéž o jiných MTA. Dal jsem na něj, a tak nikdo snad nepřijde zkrátka – vlastní instalaci popíšu ve vícero variantách a v dalším textu se alespoň stručně zmíním, v čem se postup bude lišit. Pokročilejší konfiguraci, rozšiřování funkcí o další skenery či služby, sledování statistik pomocí MRTG a jiné chuťovky necháme na příště. Doufám, že toto příště bude o něco dříve než příště minulé ;-) .

Předpoklady

Předpokládám, že vám někde (ať už v klimatizovaném IT centru, či třeba u tchyně ve sklepě vedle brambor) šlape linuxový server, že zvládá základní síťové funkce, případně (ale samozřejmě nikoliv nutně) včetně iptables. Dále předpokládám, že na něm vesele bzučí Postfix, případně jiný MTA (Sendmail, Qmail apod.) – jeho instalací se zabývat nebudu, téma je zpracováno dostatečně na mnoha místech, root nevyjímaje. Na stroji musí fungovat také Python, jakákoliv verze řady 2 pro základní funkce, anebo raději rovnou verze 2.2 či novější pro plnou podporu.

Balíčky

Budeme potřebovat zhruba toto:

  • Antispamová/an­tivirová brána Sagator (nečekaně)
  • Antivir ClamAV
  • Antispam Spamassassin
  • Rozbalovače unrar, unace, unarj, arc, zoo, lha, tar, apod.

Sagator samotný můžete stahovat z domovské stránky, a to v univerzálním .tar.bz2 formátu, také jako .rpm pro Fedora Core 1, 2 a 3 a v neposlední řadě .deb pro Debian. Daniele Dignani se stará o balíčky pro Slackware. Oddíl Downloadsstránky projektu je rozcestníkem k nejnovějším balíčkům pro jednotlivé distribuce. Ty jsou fyzicky umístěny v adresáři pub/sagator/ spolu s verzemi staršími. Balíčky .tar.bz2 jsou ke stažení také na projektové SourceForge stránce. Instalací pro jednotlivé distribuce se budeme zabývat dále.

Debian woody

Nepředpokládám, že by někdo provozoval testing nebo unstable server, proto se budeme zabývat pouze stabilní větví. Ne všechny potřebné balíčky jsou k dispozici z oficiálních zdrojů, proto přidáme pár řádků do /etc/apt/sources­.list:

#ClamAV
deb http://www.backports/debian woody clamav libidn curl
#Sagator
deb http://www.salstar.sk/pub/sagator/debian woody main
#Spamassassin
deb http://www.backports/debian woody spamassassin

deb http://www.backports/debian woody arj unrar-nonfree unzoo

Obskurnější komprimační nástroje bude asi rozumnější stáhnout v podobě .deb balíčků. Od německých sousedů posbíráme unace a arc, s ostatními snad nebude problém.

wget http://packman.iu-bremen.de/debian/woody/backports/unace/unace_1.2b-1woody0_i386.deb
wget http://www.gws-online.de/download/woody/arc_5.21e-5_i386.deb
dpkg -i unace_1.2b-1woody0_i386.deb arc_5.21e-5_i386.deb

Pro instalaci balíčků nejraději používám Aptitude, protože si moc pěkně hlídá, které balíčky jsou instalovány výslovně na přání uživatele a které pouze plní závislosti. Nuže, jděme na věc:

aptitude

V menu vybereme z menu Actions->Update package list, pak už zbývá jen najít potřebné balíčky (třeba klávesou „?“) a nainstalovat je („i“). Hodit se budou především tyto: sagator, clamav, clamav-daemon, clamav-testfiles,sagator-libclamav, spamassassin a již zmíněné dekomprimátory, tedy unrar, unarj, zoo, lha, tar a rovněž všechny, které Aptitude doplní pro splnění závislostí.

Pokud nemáte rádi Aptitude, můžete také jednoduše:

apt-get update
apt-get install sagator clamav clamav-daemon clamav-testfiles sagator-libclamav spamassassin unrar unarj zoo lha tar

Jinak – Sarge už má vše potřebné, nezbývá než se těšit.

Fedora Core 1 a 2

Instalaci v systémech založených na RedHatu (případně jiných .rpm kompatibilních) zařídí přímo rpm, případně yum. Spokojíte-li se s rpm, stáhnete RPM balíčky ze stránky projektu:

lynx http://www.salstar.sk/pub/sagator/fedora/

Případně můžete přímo instalovat, budete ale muset nejdříve ověřit, jaká je poslední stabilní verze.

rpm -Uhv http://www.salstar.sk/pub/sagator/fedora/3/i386/sagator-x.x.x-x.fcx.i386.rpm

Pokud používáte yum, bude třeba něco málo zapsat do/etc/yum.conf (pro FC1,2), případně do adresáře /etc/yum.repos.d/ (pro FC3):

[sagator]
name=Fedora Core $releasever - $basearch - Sagator
baseurl=http://www.salstar.sk/pub/sagator/fedora/$releasever/$basearch

A teď už jen..

yum install sagator

Univerzální

Nejprve skočte tam, kam jste zvyklí nahrávat zdrojáky programů (asi nejlépe /usr/src). Ze stránky projektu stáhněte vhodný balíček. Můžete použít třeba lynx nebo cokoliv, co je blízkého vašemu srdci..

cd /usr/src
lynx www.salstar.sk/pub/sagator

Vyberte nejnovější a stiskem „D“ ho stáhněte. Balíček rozbalte a zkompilujte. Můžete ho také rovnou nainstalovat:

tar -xjf sagator-x.x.x.tar.bz2
cd sagator
make
make install

Sagator umí pracovat v chrooted prostředí, což vřele doporučuji – konfigurace vyžaduje jenom pár kroků navíc a výsledek bude o poznání bezpečnější.

Nejprve vytvoříme uživatele, pod kterým se budou hledat viry a spamy. Pokud je váš stroj dostatečně standardní, mělo by již stačit spustit skript pro vytvoření vlastního chrootu, podle konvence nejlépe do /var/spool/vscan, ale můžete i jinam:

useradd vscan -M -s /sbin/nologin
./scripts/mkchroot.sh --auto

Parametrem –auto dáváte skriptu svou důvěru v tom, aby prohledal váš systém a do klece nasoukal kromě základního systému vše nutné pro běh antiviru, veškeré pakovače, které máte nainstalovány (ano, dříve než jej spustíte, je dobré se o ně postarat). Mimochodem s nezbytností pakovačů už to není tak žhavé – vše kromě novějších verzí raru zvládne ClamAV rozbalit vnitřními prostředky. Pokud chcete likvidovat staré krámy, co se vám po čase nahromadí v karanténě, můžete použít program tmpwatch a přidat záznam do úloh crona, řekněme do souboru sagator v /etc/cron.daily:

#!/bin/sh
# clean old quarantine after 32 days
/usr/sbin/tmpwatch --ctime 768 "/var/spool/vscan/tmp/quarantine"

Antivirus

ClamAV

ClamAV poběží v kleci, kterou jsme připravili v rámci instalace Sagatora. Bude ještě nutné ověřit, případně nastavit pár drobností. Upravme nejprve clamav.conf v etc podadresáři našeho chrootu (/var/spool/vscan/et­c/clamav/clamav­.conf):

DatabaseDirectory /var/lib/clamav
LocalSocket /var/run/clamav/clamd.sock
StreamSaveToDisk # recomended
ScanMail # required
ScanArchive # recomended

Aktualizaci systému ClamAV, tedy především nahrávání nových virových řetězců, má na starosti utilitka freshclam. V souboru /etc/clamav/freshcla­m.conf ponechte DatabaseDirectory tak, jak je, pouze tento adresář nasymlinkujte do klece (pokud jste neinstalovali Sagator z .deb nebo .rpm, při kteréžto instalaci to již pravděpodobně bylo zařízeno):

ln -s /var/lib/clamav /var/spool/vscan/var/lib/clamav

Různé verze ClamAV mohou mít tuto databázi na různých místech –proto je třeba nejprve ověřit konfiguraci. V freshclam.conf můžete nastavit, že chcete přednostně aktualizovat z domova a až v případě potíží z globálního serveru:

DatabaseMirror db.cz.clamav.net
DatabaseMirror database.clamav.net

Dále jsem si pro vyšší pohodlí vytvořil symlink na adresář s logy Sagatoru do /var/log, pokud jste líní podobně jako já a nechce se vám kvůli zkoumání logu psát celých 16 (!) znaků navíc, udělejte to také:

ln -s /var/spool/vscan/var/log/sagator /var/log/sagator

Pokud ClamAV budete v budoucnu aktualizovat, ověřte, zda byla tato nastavení zachována.

Antispam

Spamassassin

Spamassassin je už v základním nastavení docela použitelný. Za zmínku stojí především soubor /etc/spamassas­sin/10_misc.cf, kde je možné třeba lokalizovat zprávu o nalezení viru:

clear-report-template
report ------------------- Zacatek SpamAssassin vysledku ---------------------
report Tato zprava je pravdepodobne spam. Jeji puvodni zneni bylo pozmeneno,
report abyste mohli priste snaze rozpoznat podobne nevyzadane zpravy.
report Na adrese http://spamassassin.org/tag/ najdete blizsi informace.
report
report Vysledky analyzy obsahu:   (_HITS_ hits, _REQD_ required)
report _SUMMARY_
report ------------------- Konec SpamAssassin vysledku -----------------------

Případně zprávu o lapení spamu v kleci:

clear-spamtrap-template
spamtrap Predmet: tato adresa jiz neni k dispozici
spamtrap [tato zprava byla automaticky vygenerovana]
spamtrap
spamtrap Prosim, uvedomte si, ze tato adresa jiz neni aktivni. Jedine,
spamtrap co na tuto adresu prichazi, je nevyzadana komercni posta (spam).
spamtrap Kazda zprava, co dojde na tuto adresu, je automaticky zarazena
spamtrap do nekolika databazi spamu a nasledne automaticky smazana.
spamtrap
spamtrap Pokud skutecne potrebujete kontaktovat majitele schranky, prosim
spamtrap zkontrolujte svuj adresar anebo zapatrejte na webu po soucasne
spamtrap platne adrese.
spamtrap
spamtrap Zprava, kterou jste poslali, je v plnem zneni nize, abyste meli
spamtrap co preposlat na spravnou adresu. Omlouvame se za snizene pohodli!
spamtrap
spamtrap [-- Podepsano: SpamAssassin postovni filtr]
spamtrap

A také hutnější podobu hlášení o výskytu spamu, dáváte-li mu přednost:

clear-terse-report-template
terse-report ---- Zacatek SpamAssassin vysledku
terse-report _HITS_ bodu, _REQD_ pozadovano;
terse-report _SUMMARY_
terse-report ---- Konec SpamAssassin vysledku

Spamassassin každou zprávu zkoumá podle mnoha kritérií a na závěr bodově ohodnotí, jak hodně je spamovitá. Na základě volby required_hits nakonec rozhodne, zda jde o spam, či ham – můžete pomocí ní kontrolovat, jak přísný má Spamassassin být, když slídí. Čím vyšší hodnota, tím méně spamu zachytí, ale zase tolik nehrozí falešné označení za spam; čím nižší, tím více ulehčí vašim poštovním schránkám, ale poroste riziko, že se se spamy sveze sem tam i nějaký ten newsletter nebo jiná vyžádaná správa.

required_hits           8

Vzhledem k tomu, že chyba druhého druhu (statistik promine) je závažnější, je lépe zprvu k věci přistupovat benevolentně a nastavit nejprve vyšší hodnotu, řekněme 8, nechat systém pár týdnů běžet a sledovat reakce uživatelů a až následně zpřísňovat. Časem pravděpodobně skončíte na hodnotách kolem 3–5, dost ale záleží na další konfiguraci, tedy například, zda použijete síťové testy. Velkou pomocí v této souvislosti bude sagatoří vícestupňové nakládání se spamy, které si popíšeme příště. Za zmínku stojí také volba auto_report_threshol­d – určuje, jaká úroveň spam hits znamená jistý spam a má tak být nahlášena do systémů černých listin typu Razor. Zde je doporučována ještě vyšší opatrnost.

auto_report_threshold   20

Poslední volba, o které se zmíním, je nastavení jazyků, ve kterých přijímáte zprávy. Spamassassin znakovou sadu zprávy posoudí jako jedno z kritérií, na jejichž základě určí spam hits.

ok_locales              cz en de

Zejména pokud se vám stává, že zprávy z konkrétní adresy nebo domény jsou nesprávně označovány jako spam (chyba druhého druhu), přijde vhod také konfigurační soubor 60_whitelist.cf. Pokud vám například nechodí mnoho spamů z českých domén, můžete sem přidat *.cz.

Sagator

Globální nastavení

Veškerá nastavení Sagatoru hledejte v souboru /etc/sagator.con­f, případně nějak podobně – podle zvyklostí vaší distribuce. První část souboru obsahuje nějaká globální nastavení. Tak například čím vyšší DEBUG_LEVEL, tím více toho najdete v logu:

DEBUG_LEVEL=3

Teď nějaké ty adresáře pro logy a karanténu:

CHROOT='/var/spool/vscan'
LOGFILE=CHROOT+'/var/log/sagator/sagator.log'
QUARANTINE_DIR=CHROOT+'/tmp/quarantine'

Uživatel a skupina, pod kterým se bude testovat:

USER,GROUP='vscan','vscan'

Komunikační nastavení – na jakých adresách a portech běží MTA, hlavní služba Sagatoru a jeho sběrač informací:

SMTP_SERVER=('127.0.0.1',26)
BIND_ADDR=('localhost',27)
COLLECTOR_SERVER=('0.0.0.0',28)

Služby – SRV=[]

Sagator je navržen modulárně, což se zračí i v možnosti konfigurovat jednotlivé jeho služby. Službou se rozumí podprogram, který komunikuje se světem – s MTA nebo s jiným klientem (ano, MTA je z pohledu Sagatoru klient). Momentálně nás bude zajímat oddíl SRV=[] souboru sagator.conf, kde se nastavuje vše potřebné. Soubor má příponu py, z čehož můžete usoudit, že jde vlastně o zdrojový kód Pythonu. Myslím ale, že na přehlednosti mu to nijak neubírá. Je třeba mít na paměti některá specifika Pythonu, například to, že odsazení od začátku řádku nemá význam pouze estetický, ale je funkčně významné – Python podle něj rozeznává programové bloky. SRV je proměnná Pythonu a její hodnota je klasické pythonovské pole – vypadá tedy nějak takto:

SRV=[ service1, service2, ... ]

Vlastní služby jsou definovány v oddělených souborech, proto jsou na začátku konfiguračního souboru importovány:

from srv import *

Co sem tedy nastavovat? Záleží na prostředí vašeho serveru, a také na plánovaném využití. Ukážeme si pár příkladů použití, někdy příště rozebereme, co znamenají jednotlivé parametry a jak je možné doplnit jiný typ služby, pokud by vám nestačily dodané.

SMTPd

Sagator poběží jako samostatný SMTP démon. Je to asi nejběžnější řešení vhodné jak pro Postfix, tak pro asi jakýkoliv jiný smtpd. Přidáme ještě službu sběrače informací, která se bude hodit zejména pro analýzy provozu a statistiky (detaily necháme na příště):

SRV=[
  collector('0.0.0.0',28),
  smtpd(SCANNERS,'127.0.0.1',27)
]
Milter

Sagator pracuje v režimu, kterému rozumí především Sendmail, ale dnes již i jiné SMTP servery. Opět přidáme sběrače:

SRV=[
  collector('0.0.0.0',28),
  milter(SCANNERS,"sagator","inet:3333@127.0.0.1")
]
HTTP skenovací služba

Bude se hodit, pokud chcete použít Sagator jako antivirový/an­tispamový proxy server. Zde je ale na místě upozornění – služba byla přidána až v posledních beta verzích a je v raném stádiu vývoje, tudíž zatím nic pro důležité servery.

SRV=[
  collector('0.0.0.0',28),
  http_proxy(SCANNERS,'0.0.0.0',3128)
]

Skenery – SCANNER=[]

Konečně se dostáváme k jádru věci – k vlastní konfiguraci skenerů neboli filtrů. Konfiguruje se stejný soubor, tedy sagator.conf, zajímá nás ale jiný oddíl – SCANNERS=[]. Mnoho inspirace načerpáte při čtení samotného souboru – je poměrně bohatě okomentovaný a obsahuje spoustu příkladů různých nastavení – vesměs stačí pouze vybírat a odkomentářovat.

V první řadě bych rád nastínil, jak vlastně Sagator s filtry zachází. Skenery se mohou vnořovat do sebe, takže než je rozhodnuto o osudu zprávy, projde obvykle celým řetězcem nebo přesněji stromem skenerů. Pokud některý skener identifikuje virus, zprávu označí nevábným cejchem, který se s ní nese na cestě zpátky strukturou skenerů, aby následně například bídně skončila v karanténě. Pokud některý skener skončí chybou, tak tato chyba taktéž v podobě chybového příznaku probublá až do míst, kde se o zprávě rozhoduje.

Skenery jsou definovány v pythonovském poli zhruba takto:

SCANNERS=[ scanner1, scanner2, ... ]

Protože vlastní skenery jsou v jiných souborech, na začátku konfiguračního souboru je sekce s importem jejich API:

from scanners import *

Uvedeme si nejprve pár příkladů pro začátek. Pokud chcete pro každou zprávu spustit clamscan, docílíte toho pomocí skeneru clamav:

SCANNERS=[
  clamav(['/usr/bin/clamscan','--stdout','--infected',
    '--disable-summary','-r','--mbox'])
]

Je libo Spamassassin jako druhý chod? Prosím, máme ve verzi démona skener spamassassind:

SCANNERS=SCANNERS+[ spamassassind(['localhost',783]) ]

Všechny skenery, které jsme zatím uváděli, jsou „plnotučné“ – samy zpracují testovaný e-mail či jeho přílohu a rozhodnou o výsledku. Proto jsme je uváděli samostatně nebo řadili za sebe (clamav a za ním spamassassind). Kromě nich zná Sagator subskenery, tedy skenery jaksi „polotučné“. Ty víceméně pouze předžvýkají zprávu nějakému jinému skeneru – patří sem především dekomprimační filtry a parsery. Pokud byste například nechtěli používat interní parser ClamAVu, můžete to zařídit třeba takto:

SCANNERS=[
  parsemail(clamd(['localhost',3310]))
]

A co takhle zlikvidovat všechny přílohy pojmenované jako spustitelné na systémech Windows? Bude se nám hodit skener parsemail() se svým attach_name().

EXECUTABLES='(\.exe|\.COM|\.com|\.COM|\.pif|\.PIF|\.lnk|\.LNK|\.scr|\.SCR)'
SCANNERS=[ parsemail(attach_name(EXECUTABLES)) ]

Za zmínku stojí třeba skener avfilter(). Bude se vám hodit, pokud je váš root lenoch a nechce vám Sagator nainstalovat, vy práva nemáte, ale nezbytně potřebujete filtrovat svou poštu. O skeneru se zmíníte ve svém .procmailrc – a je to. Drobnou vadou na kráse je dopad na výkon – proces Sagatoru se spouští pro každou zprávu, což sebere dost prostředků. To je ale problém toho roota, že ;-)

Někdy příště bychom si uvedli trochu složitější konfiguraci včetně přesouvání do karantény, dvoustupňového rozhodování o spamech a několika dalších veselých věcí.

Testování nasucho

Pokud jste postupovali podle návodu (a pokud váš systém není nějaký nestandardní (a pokud v návodu nejsou chyby ;) ), příkaz

/etc/init.d/sagator start
Starting Sagator...

by měl nastartovat služby Sagatoru tak, jak jste si je nastavili. Zda běží daemon, můžete ověřit třeba pomocí ps, a zda naslouchá na správných portech, pomocí netstat:

ps -aA | grep sagator
 7634 ?        00:00:01 sagator
 7637 ?        00:00:00 sagator
 7638 ?        00:01:46 sagator
 7639 ?        00:01:38 sagator
 7640 ?        00:02:40 sagator
 7641 ?        00:01:36 sagator
 7642 ?        00:01:22 sagator

netstat -tlap | grep python
tcp 0 0 localhost:27 *:* LISTEN 7637/python2.2
tcp 0 0 localhost:28 *:* LISTEN 7634/python2.2

Nyní je vhodný čas prozkoumat logy – podívejte se do /var/log/saga­tor/sagator.log, zda je vše v pořádku.

Pokud vás ze židle sesadila nějaká drtivá hláška, nezbude než problém řešit, že… Pokud příčinu neodhalíte sami zkoumáním konfiguračních souborů a dokumentace, určitě se dočkáte podpory v mailinglistu sagator-users at lists.sourcefor­ge.net, případně přímo od autora na adrese ondrejj at salstar.sk.

Zdá-li se vše býti v pořádku, skočte do adresáře /usr/share/doc/test (nebo do adresáře se Sagatorem a pak do podadresáře test). Pomocí zde umístěného nástroje smtptestmůžete zkoumat funkčnost Sagatoru, aniž by bylo zatím třeba konfigurovat MTA. Takový postup je zejména na produkčních serverech více než rozumný, pokud tedy nestojíte o nějaké to dobrodružství ;-)

cd /usr/share/doc/test
./smtptest localhost 25 clean
./smtptest localhost 25 Eicar
./smtptest localhost 25 spam
./smtptest localhost 25 pack/test.zip
./smtptest localhost 25 pack/test.rar

.. a tak podobně. Pokud se při spouštění dozvíte něco jako „permission denied“, asi bude třeba nejprve nastavit smtptest jako spustitelný:

chmod 700 smtptest

Šablona zprávy Eicar obsahuje řetězec, který se používá k testování antivirů – sice to není virus, ale antiviry by jej měly odhalit a naložit s ním jako s virem. Význam ostatních vzorových zpráv je snad zřejmý z jejich názvu. Pokud vše funguje (můžete ještě prozkoumat logy), je před námi poslední důležitý krok – konfigurace MTA.

Poštovní doručovatel

Z tohoto oddílu si samozřejmě vyberte jenom tu část, která je určena vašemu SMTP serveru ;). Pokud jste instalovali z balíčku (.deb či .rpm), dost možná bude již vesměs vše nastaveno autorem, ale vyplatí se zkontrolovat.

Postfix

V první řadě bude třeba Postfix požádat, aby kontroloval obsah zpráv. Toho docílíme přidáním následujících řádků do /etc/postfix/ma­in.cf:

mynetworks = 127.0.0.0/8, ...
content_filter = smtp:[127.0.0.1]:27

Jak vidíte z obrázku (který jsem si půjčil od SALa), Postfix je navržený modulárně – jednotlivé služby si zprávy předávají a každá provádí svůj díl práce. Musíme proto zajistit, aby se spustila služba Postfixu, která zajistí vlastní kontrolu zpráv.

Postfix

Služby se nastavují v /etc/postfix/mas­ter.cf, právě sem přidáme řádky:

# Local smtpd without scanning
127.0.0.1:26    inet n - n - 30 smtpd
  -o content_filter=
  -o myhostname=sagator.stroj.vasedomena.cz
  -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

Parametr myhostname můžete upravit podle své domény a jména stroje, není to ale nutné – je v podstatě jedno, co tam bude. Pokud máte sklon k puntičkářství a přeci jen ho upravíte, nezapomeňte tam ten„sagator.“, jinak Postfix dokonale zacyklíte. Především v tomto bodě díky SALovi za pomoc..

Pár následujících kroků bude třeba provést, pokud jste instalovali z .tar.bzip2 – balíčky Debianu i RedHatu snad již vše zařídily.

Tak tedy, přidejte spouštěcí skript do /etc/init.d/ – můžete nakopírovat nebo nasymlinkovat sagator.init, který se povaluje někde v adresáři se Sagatorem. Obecným zvykem je pojmenovávat skripty podle služby, tedy

cp scripts/sagator.init /etc/init.d/sagator

Skript odpovídá konvencím spouštěcích skriptů – zná parametry start, stop apod. Pokud budete chtít automatické spouštění po startu, vypínání při vypínání a vůbec korektní obsluhu přechodů mezi runlevely, bude ho ještě třeba nasymlinkovat do jednotlivých rcx.d adresářů, třeba nějak takhle:

ln -s /etc/init.d/sagator /etc/rc0.d/K20sagator
ln -s /etc/init.d/sagator /etc/rc1.d/K20sagator
ln -s /etc/init.d/sagator /etc/rc2.d/S20sagator
ln -s /etc/init.d/sagator /etc/rc3.d/S20sagator
ln -s /etc/init.d/sagator /etc/rc4.d/S20sagator
ln -s /etc/init.d/sagator /etc/rc5.d/S20sagator
ln -s /etc/init.d/sagator /etc/rc6.d/K20sagator

Sendmail

Pro úspěšnou spolupráci se Sagatorem budete potřebovat Sendmail s podporou miltrů a vlastní Python milters. Dále bude nezbytné Sendmailu vnutit sagatoří milter, proto přidáme následující řádky do /etc/mail/sen­dmail.cf. Přesný význam těchto zaklínadel najdete v dokumentaci k miltrům.

O InputMailFilters=sagator
Xsagator, S=inet:3333@127.0.0.1, F=T

Sagatoru budeme muset nařídit, aby běžel jako milter. Přidáme jeden řádek do sagator.conf, do oddílu SRV[]:

milter("sagator","inet:3333@127.0.0.1")

Více o konfiguraci Sagatoru včetně oddílu s definicí služeb bude ještě dále v článku. Sagator v režimu milter má některá omezení, například nemůže modifikovat předmět zprávy a ani jiné hlavičky, může pouze přidávat nové.

Jiný

Sagator není pevně svázán s žádným MTA, záleží jenom na flexibilitě vlastního MTA. Kdyby náhodou uměl spolupracovat s miltry (jakože asi neumí, ale časem – kdo ví?), můžete zkusit nakonfigurovat ho podobně, jak bylo doporučeno výše u Sendmailu. Každopádně můžete provozovat Sagator jako SMTP proxy – umístit ho na standardní port 25 a vlastní SMTP server odsunout někam jinam (třeba na port 26) a požádat ho, aby proháněl poštu přes port 25. V takovém případě ale zakažte svému serveru relay pro 127.0.0.1, protože byste se záhy stali open relay pro bandy konektivitychtivých spammerů.

Tak konkrétně – řekněme, že smtpd umístíte na port 26 localhosta a port 25 vnitřní IP. Pak povolte přenosy z vnitřní sítě na port 25 interní IP a zakažte přenosy na localhost:26 nebo z 127.0.0.0/8. Sagator v tom případě nastavte takto:

SMTP_SERVER=('127.0.0.1',26)
SRV = [ smtpd('vase_vnejsi_ip',25) ]

Vypusťte Krakena!

Ujistěte se, že Sagator běží. Pokud ne, spusťte jej – více viz výše v oddílu s testováním. Poté přimějte MTA znovu načíst konfiguraci – Postfix ji sice po nějaké době načítá sám, ale jistota je jistota:

/etc/init.d/postfix reload

Nyní je opět vhodný čas prozkoumat logy – podívejte se do /var/log/mail­.info a případně i do /var/log/saga­tor/sagator.log.

Dále můžete zkusit poslat pokusnou zprávu:

#mail root
Subject: blah
Blah blah
.
Cc:

Měla by dorazit, můžete zkontrolovat ještě logy, zda ji Sagator dostal ke zpracování, jakými filtry prošla a co se s ní stalo. Dále můžete zkoušet posílat zprávy z jiných počítačů, zprávy čisté i pokusné „spamy“, Eicar apod. Já jsem si například vytvořil pár zpráviček, které používám jako testovací:

Subject: free porn level3

enlarge, promotion, sex, viagra.
$$$ 1000000

a

Subject: free porn level5

john11234@aol.com
anyspamreader
enlarge, promotion, sex, viagra.
$$$ 1000000

a

Subject: free porn level8 vIa3ra

From: john11234@aol.com
To: anyspamreader
Subject: PENIS, VIAGRA, FREE, PORN, $$$$$$$$ WIN
diz is spam
enlarge, promotion, sex, viagra.
$$$ 1000000
opt-ing
<html>
$FF0000
</html>

V předmětu zprávy je hodnota spam hits, kterou přiřadí Spamassassin tak, jak ho mám momentálně nakonfigurovaný. Vaše nastavení se asi bude trochu lišit, a tak levely nebudou přesně odpovídat, ale každopádně poslední zpráva by měla dopadnout hůře než zpráva první. Pro vlastní posílání mám ještě takovéhle jednoduché skriptíky, které používají MUTT k odeslání testovacího souboru, jednou jako přílohu a podruhé jako vlastní tělo zprávy:

#!/bin/sh
mutt -a $1 -s "test $1" moje.adresa@domena.cz < _body

a

#!/bin/sh
mutt moje.adresa@domena.cz < $1

Nezbývá než si pogratulovat k úspěšné instalaci antivirové a antispamové likvidační jednotky a trochu si promnout červené oči…

bitcoin_skoleni

Jinak – díky SALovi za velkou pomoc při páchání článku.

Příště

Příště bychom podrobněji popsali jednotlivé skenery, pohrajeme si s trochu pokročilejší konfigurací Sagatoru, a to včetně přesouvání do karantény, dvoustupňového rozhodování o spamech a několika dalších veselých věcí. Zmíníme se o postupech, které se vám budou hodit za provozu – jak zkontrolovat schránky plné pošty nebo jak vracet z karantény. Možná dojde i na sledování statistik pomocí MRTG, možnost obohatit Sagator o další funkce (skenery či služby) a jiné.

Seriál: Sagator

Autor článku