Spam Proxy - dokumentace
Vytvořil Martin Petříček <bilbo@centrum.cz>
Obsah
Stručný popis programu
Program, který naslouhá na dvou portech (POP3 a SMTP protokol). Na POP3 zkoumá stahované zprávy jestli je to spam a podle výsledku identifikace podnikne akce (označit zprávu, poslat falešné upozornění "uživatel neexistuje", atd ...)
Na SMTP pouze forwarduje zprávy nějakému nadřazenému SMTP a ukládá emailové adresy lidí, kterým pošlu email do whitelistu
K programu je i tato dokumentace:
Popis syntaxe konfiguračního souboru
Seznam parametrů příkazové řádky
Použité knihovny
Standardní knihovna (libc)
POSIX threads (libpthread)
Popis zdrojových kódů
Dokumentace je generována automaticky z okomentovaných zdrojových kódů (čímž si ušetřím práci, stačí "jenom" dobře komentovat zdrojáky, dokumentace se pak vytvoří automaticky)
Dokumentace je generována do samostatného adresáře doc/html
Poznámky ke kompilaci
Před kompilací je nutné spustit
./configure
Potom lze spustit
make
- zkompiluje program
Ke kompilaci je vyžadován perl
. (na většině unixů je standardně nainstalován)
Pokud spustíte make clean
tak dojde k vymazání všech vytvořených dočasných a vygenerovaných souborů.
make distclean
smaže kromě toho i zkompilované binární soubory a konfiguraci vytvořenou skriptem configure.
RCS
V adresáři RCS jsou uloženy pomocí RCS (Revision control system) i starší verze projektu.
Jak to funguje
- Blacklist, whitelist
- Identifikace spamu externím programem do hodnot mezi úroveň 0 (ne-spam) až 100 (určitě spam), konfigurovatelné akce na základě zjištěné úrovně.
SMTP proxy
Emaily jsou pouze přeposílány, pouze příjemce (skutečný příjemce daný při komunikaci se SMTP serverem, nikoliv to, co je v emailu v hlavičce "To:") je přidán do whitelistu.
POP3 proxy
Proxy očekává uživatelské jméno ve tvaru "uživatel@server", poté se připojí na server server, kterému pošle uživatelské jméno uživatel
Každý přijatý email ze serveru je nejprve otestován na přítomost odesílatele v blacklistu, či whitelistu (ten má vyšší prioritu), pokud není ani v jednom z nich, aplikují se na email filtry dané v konfiguraci pod klíčem classify-filter a jejich výstup je ohodnocen programem classification.
Podle hodnoty, která vyplyne buď z blacklistu, whitelistu, nebo klasifikace emailu, jsou na původní email (před filtrací pomocí classify-filter) aplikovány filtry dané v klíči post-filter a pak jsou na něj spuštěny akce dané programy v klíči post-action.
Poté je email eventuelně označen podle konfigurace v klíči mark-subject a poté je poslán klientovi.
Jiné příkazy (např. výpis hlaviček, atd ...) procházejí nezměněny.
Filtry a akce
Filtr, klasifikátor, či akce je proces, který POP3 proxy spustí a na standardní vstup mu pošle zpracovávaný mail.
Proces by měl načíst email ze STDIN a u filtru se očekává, že vrátí nějak pozměněný (nebo i nepozměněný) email na STDOUT.
U akcí se STDOUT ignoruje - sice se čte (takže program se nezasekne, pokud bude vypisovat nějaké debugovací hlášky), ale zahazuje se.
U klasifikátoru se očekává, že místo emailu na výstup napíše kladné celé číslo a odřádkuje.
Procesy by měly vracet návratový kód 0 (exit(0)), pokud vrátí něco jiného, bere se ze to, že selhaly (u filtru bude obnovena původní zpráva, u akcí bude toto jen zalogováno, u klasifikátoru dostane email hodnotu 0)
Dále, pokud filtr nevypíše na výstup jediný bajt, bere se za to, že nechce mail pozměnit (a výsledek pak bude stejný, jako by mail pouze přeposlal ze vstupu na výstup, jen se tím ušetří čas)
Další detaily o použití filtrů jsou uvedeny v Popisu syntaxe konfiguračního souboru
V adresáři filters je několik ukázkových (a i v praxi použitelných) skriptů, které lze použít s POP3 proxy.
Soubor init.d/spproxy je určený pro nakopírování do /etc/init.d/sp_proxy, kde po patřičném nalinkování (jako
např. S90spproxy do runlevelů, kde chceme tohoto démona spouštět - typicky 2 až 5 - a jako K10spproxy do runlevelů, kde běžet
nemá - typicky 0,1,6) zajistí spuštění démona v patřičných runlevelech. Na systémech, kde neběží System V init, si musíte startovací
skripty upravit sami.