Kontrola plných poštovních schránek
Může se stát, že nějaká hanebná zpráva projde ochrannou zdí Sagatoru. Typicky se to stane, pokud není váš antivirus aktuální – a mnohé viry stihnou během pár hodin oblétnout svět třeba i několikrát. Dodatečná aktualizace již nic nezmůže, pokud tedy explicitně nezahájíte opětovný test již umístěné pošty. Program sgscan umí přesně to – prochází schránky a aplikuje na ně stejné řetězce skenerů, jakými jsou běžně proháněny zprávy nově příchozí. Spustíte ho takto:
sgscan /var/spool/mail/*
Program sgscan zná různé parametry – např.
--av-only
… budou se hledat pouze viry a nikoliv spamy
--progress
…veselý nový parametr, uvidíte, jak skenování probíhá – kolik zpráv bylo zkontrolováno, kolik nakaženo… a jak to dlouho ještě bude trvat
--clean
…zamkne schránky ve formátu mailbox příkazem lock a nalezené viry odstraní, pak schránky zase odemkne. Při používání parametru clean uživatelé nebudou moci stahovat zprávy a ani nebudou doručovány zprávy nové. Když odhalíte nákazu, co pronikla do schránek, možná bude stejně nejpraktičtější na chvíli zastavit IMAP a POP server, protože pokud si uživatelé zprávy vyzvednou, Sagator už opravdu nepomůže. Chcete-li se podobným zásahům vyhnout, nezbývá než aktualizovat, aktualizovat a ještě jednou hádejte co.
Kompletní seznam parametrů najdete, jak jste zvyklí, v manuálové stránce.
Vyzvednutí z karantény
Nestává se to často, ale uživatelé občas některý odstraněný mail požadují doručit. Připraveni byste měli být, zejména pokud likvidujete zprávy se spustitelnými přílohami, zprávy příliš velké a jinak nestandardní (tedy nikoliv pouze jasné viry). Pomůže vám sgback:
sqback quarantined_file1 [quarantined_file2 […]]
Tedy například:
sqback qm-20031001-215727-1
Případně také netcat:
nc localhost SMTP_PORT_WITHOUT_FILTER < .../quarantine/filename
Limitování velikosti zpráv
Jak se zbavit extrémně velkých zpráv? Předně můžete zkusit využít schopností vašeho poštovního serveru (Postfix tomu říká message_size_limit), což považuji za nejrozumnější. Pokud to váš poštovní server neumí, případně se vám taková myšlenka nelíbí a rádi byste nakládali se všemi odmítanými zprávami stejně (vč. oznamování o nedoručení apod.), můžete využít skeneru max_file_size() takhle jednoduše:
SCANNERS=[
max_file_size(7340032)
]
To dlouhé číslo určuje maximální přípustnou velikost zprávy vč. příloh (base64, uuencode..) v bajtech. Stejný skener se dá využít i k rafinovanějším věcem. Pokud například nechcete, aby se počítač zdržoval skenováním převelikých zpráv, můžete to udělat třeba takto:
SCANNERS=[
(const(1.0)-max_file_size(7340032)) & další_skener()
]
Za operátorem & mohou následovat další skenery. Možná se také ptáte, proč tam je ta divná konstanta na začátku. Souvisí to s tím, jak skener max_file_size funguje. Vrací informaci o „zavirovanosti“ zprávy, pokud tato přesáhne limit. Konstanta 1.0 znamená virus. Celková návratová hodnota je rozdílem těchto hodnot, tedy 1.0 – 1.0 = 0.0 pokud je zpráva větší, a 1.0 – 0.0 = 1.0 pokud je menší. Následuje operátor and, to proto, aby byl následující skener volán, pouze pokud se zpráva do limitu vešla.
Modifikace hlaviček
Sagator umí hlavičky přidávat. Je to snadné, použijte add_header():
add_header('X-Nova-Hlavicka', 'Hodnota hlavicky ...', const(0.0, 'X'))
Podobně fungují skenery modify_header() a remove_header().
Pár dalších jednoduchých skenerů
regexp_scan()
Vyhledávání regulárních výrazů v těle zprávy
string_scan()
Vyhledávání textových řetězců v těle zprávy
attach_name()
Rozhodnutí na základě přítomnosti přílohy
file_type()
Test podle přípony souboru
Kompletní seznam skenerů najdete na stránkách projektu, případně v dokumentaci, která je součástí vaší distribuce Sagatoru.
Příště
Příležitostně se možná podělím o další zkušenosti s tímto zajímavým nástrojem. Možná se zmíním o tom, co je třeba udělat pro spolupráci Sagatoru s MRTG, případně jak psát vlastní skener a server. Každopádně – pokud vás zajímá, co nového Sagator umí, zaregistrujte se v mailing listu sagator-users na sourceforge, případně pravidelně sledujte www.freshmeat.net.
Nakonec bych ještě jednou rád vyjádřil díky SALovi za podporu, kterou mi poskytoval, a to jak při hledání vhodných cest využití Sagatoru, tak rovněž při sepisování tohoto seriálu.