Sagator (4): První hrst konfigurace

David Zejda 22. 4. 2005

V dnešním dílu začnu popisovat svoje nastavení Sagatora. Používám sice typickou kombinaci nástrojů – Postfix, ClamAV a SpamAssassin, trochu netypické jsou ale některé detaily, především to, jak moje konfigurace zachází se spamy.

Tak předně – co je (téměř) jistě spam, to nelítostně mažu. Kde si již tak jistý nejsem, tam vsunu do předmětu slovo SPAM (což je pořád ještě běžné nastavení) a také hvězdičky, které reprezentují míru spamovitosti (to již běžné není). Tolik k základním požadavkům, detaily probereme postupně..

Jinak – originální sagator.conf obsahuje také spoustu zakomentovaných a dosti podrobně popsaných možností, proto se budu zabývat především tím, co je v mém nastavení jiné. Na úvod se hodí ještě jedna poznámka – konfigurační soubor je vlastně zdroják Pythonu. Kdo jazyk zná, zjevně má výhodu, kdo ho nezná, snadno pochopí..

Úplný začátek příliš zajímavý není – hrst nezbytných importů. Pouze je třeba pamatovat na to, aby byly vždy na začátku konfigurace, jinak vám skenery nebudou fungovat.

from scanners import *
from srv import * 

Asi víte nebo přinejmenším tušíte, jakým způsobem SpamAssassin rozhoduje o zprávách. Pro jistotu ale připomenu základní myšlenku. Podle mnoha kritérií přiřazuje každé zprávě body („spam hits“). Pokud tyto překročí určitou, v konfiguraci stanovenou mez, zpráva je považována za spam. Tato hodnota je (nečekaně :) nazvána required_hits.

Sagator stejnou hodnotu rovněž využívá – některé interní skenery ji potřebují pro svou správnou funkci. Sagator by se na ni možná rád zeptal SpamAssassina, ale to není dost dobře možné, proto je dobrým nápadem poctivě ji vyplnit ručně:

REQUIRED_HITS=4.0

Vlastní skener

Uživatelskou třídu rewrite_name() použijeme v konfiguraci později. Smyslem její jediné metody nazvané taktéž rewrite_name() je přepisovat název viru, který je v případě spamu prostě „SPAM“, na něco trochu informačně bohatšího. Co konkrétně to bude, určíme až na místě použití.

Pokud jste již okem zabloudili ke zdrojáku, možná se ptáte, co je to „rename“, od kteréžto třídy je rewrite_name odvozena. Nuže je to třída, která nedávno do možností Sagatora přidala stejnojmenný skener, jež má podobnou funkci, ovšem mně se pořád ještě nelíbí. Sice umí také doplňovat hvězdičky do předmětu zprávy, ale používá při tom vnitřní stupnici Sagatora, která když se převede na celočíselné hodnoty, je příliš hrubá, a tak málokterý spam dostane víc než dvě hvězdičky. Tato transformovaná sagatoří stupnice má jedničku tam, kde SpamAssassin přiřadí required_hits, a dále vyjadřuje násobky této hodnoty. Získává se nějak takto:

Sagator spam level = spam hits / REQUIRED_HITS

Metoda rewrite_name() je vlastně skener. Pokud je zpráva podle hodnocení SpamAssassina čistá, neprovádí nic, v opačném případě upraví předmět podle parametru, s jakým je zavolána. V úpravách předmětu mohou být použity proměnné $VNAME, $LEVEL a $STARS, ty budou nahrazeny názvem viru („SPAM“), spam levelem podle SpamAssassina a levelu odpovídajícím počtem hvězdiček. Ostatní data, která procházejí datovým proudem, zůstávají netknutá.

class rewrite_name(rename):
  name='rewrite_name()';
  def scanstream(self,stream):
    level,detected,virlist=match_any.scanstream(self,stream)
    if not is_infected(level,detected):
      return level,detected,virlist
    repl_vars={
      'VNAME': detected,
      'LEVEL': str(level*REQUIRED_HITS),
      'STARS': '*'*int(level*REQUIRED_HITS),
    }
    return level,replace_tmpl(self.NEWNAME,repl_vars),virlist 

Dost možná tohle vylepšení nepoužijete (nebo v některé z budoucích verzí přibude odpovídající nativní podpora), alespoň jsem tak mohl demonstrovat, jak snadno lze Sagator rozšířit o skenery, které v jinak bohaté standardní výbavě můžete postrádat..

Lokalizace zpráv o nedoručení

Další věcí, která v našich podmínkách zaslouží pozornost, je lokalizace zpráv o nedoručení. Sagator jde totiž na vše po anglicku. Při zkoumání vlastního kódu můžete pozorovat, že jsem použil spoustu proměnných, u kterých čekám, že budou příslušně nahrazeny. Kompletní seznam proměnných najdete v dokumentaci anebo se můžete inspirovat originálními zdrojáky.

Jak také vidíte, vyčlenil jsem zvláštní adresu, na kterou budou mířit požadavky na vrácení zpráv z karantény – je to jistě praktičtější než nechat je posílat na adresu obecně používanou. Klíčová je také položka $QNAME, kterou budete potřebovat při vlastním obnovování. K procesu obnovování se dostaneme v některém z příštích dílů.

REPORT_MSG='''\
From: $FROM
To: $TO
Subject: Do vasi schranky smeroval virus $VIRNAME!
Reply-To: resurect@o-it.info

                 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 resurect@o-it.info a my vam ji zahy vratime. Vice informaci
 o systemu likvidace nevyzadane posty naleznete na strance AntiJunk.
---------------------------------------------------------------------
STATUS: $STATUS
ULOZENO DO KARANTENY JAKO: $QNAME
---------------------------------------------------------------------
SMTP KOMUNIKACE:
$SMTP_COMM
---------------------------------------------------------------------
HLAVICKA ZPRAVY:
$MSG_HEADER
---------------------------------------------------------------------
SKENER: $SCANNER_NAME
$SCANNER_OUTPUT
''' 

Příště

Zběžně projdeme základní systémová nastavení a především si prohlédneme klíčovou část konfigurace – definici řetězců skenerů.

Ohodnoťte jako ve škole:

Průměrná známka 2,70

Našli jste v článku chybu?
Zasílat nově přidané názory e-mailem
DigiZone.cz: Druhá anglická liga pro Digi TV

Druhá anglická liga pro Digi TV

120na80.cz: Tady se vaří padělané léky

Tady se vaří padělané léky

Lupa.cz: Schváleno: Rockaway může převzít Heureku

Schváleno: Rockaway může převzít Heureku

Root.cz: DDoS útoky aneb když vám zahltí dráty

DDoS útoky aneb když vám zahltí dráty

Lupa.cz: Jak EET vidí ajťák aneb Drahá vražda UX

Jak EET vidí ajťák aneb Drahá vražda UX

Vitalia.cz: Ministerstvo: tyto příbory jsou nebezpečné

Ministerstvo: tyto příbory jsou nebezpečné

DigiZone.cz: Šlágr TV dostala pokutu 100 000 Kč

Šlágr TV dostala pokutu 100 000 Kč

Podnikatel.cz: Heureka pod Rockaway? Tohle musí splnit

Heureka pod Rockaway? Tohle musí splnit

120na80.cz: 10 dezinfekcí: Vede „starý dobrý“ peroxid

10 dezinfekcí: Vede „starý dobrý“ peroxid

Vitalia.cz: 7 nemocí očí, které musíte léčit včas

7 nemocí očí, které musíte léčit včas

Podnikatel.cz: Rošáda v živnostech. Týká se vás?

Rošáda v živnostech. Týká se vás?

Podnikatel.cz: Proměny stavebnice Seva. Znáte ji?

Proměny stavebnice Seva. Znáte ji?

DigiZone.cz: Změní se veřejnoprávní status ČT?

Změní se veřejnoprávní status ČT?

Vitalia.cz: Tetanus v USA – i po odřeninách

Tetanus v USA – i po odřeninách

Vitalia.cz: SÚKL: vakcíny jsou bezpečné a s autismem nesouvisí

SÚKL: vakcíny jsou bezpečné a s autismem nesouvisí

Lupa.cz: Kam si doma dáte internet věcí? Na polici?

Kam si doma dáte internet věcí? Na polici?

Podnikatel.cz: Šizený guláš na pultě. Jako Lidl to nedělejte

Šizený guláš na pultě. Jako Lidl to nedělejte

Lupa.cz: Nová podoba Instagramu? Katastrofa

Nová podoba Instagramu? Katastrofa

120na80.cz: Zjistěte, zda je vaše klíště infikované

Zjistěte, zda je vaše klíště infikované

Vitalia.cz: Muži kouří 24 cigaret denně, ženy o dost míň

Muži kouří 24 cigaret denně, ženy o dost míň