Hlavní navigace

Greylisting aneb kladivo na spam

3. 8. 2006
Doba čtení: 4 minuty

Sdílet

Spamu je dnes všude plno a neznám nikoho, komu by nevadil. Více či méně úspěšných řešení je k dispozici mnoho. Jedno staré přísloví říká, že na hrubý pytel má přijít hrubá záplata. Podíváme se společně na jednu velmi kontroverzní, ale velmi účinnou metodu obrany proti spamu zvanou greylisting.

Podle nedávné zprávy, která se objevila na BBC.co.uk, tvoří přes 95 procent elektronické pošty spam. Taková situace si samozřejmě žádá nějaká opatření a snad žádný admin už dnes neprovozuje mail server, na kterém by nebyla alespoň základní ochrana proti spamu.

Těch samozřejmě existuje celá řada a kromě účinnosti je můžeme řadit také podle jejich kontroverznosti. Geylisting, kterým se budeme zabývat patří podle obou hledisek do horních příček. Je tedy sice kontroverzní, ale zároveň poměrně jednoduchý a především pekelně účinný.

Princip greylistingu

Metoda greylisting vychází z předpokladu, že spammeři na rozdíl od legitimních uživatelů nepoužívají k odesílání pošty servery dodržující RFC. Spammer nemá čas, chuť ani důvod řešit nějaké nefunkční adresy. Jednoduše vezme ohromný seznam, spustí robota a ten maximální možnou rychlostí chrlí ven zadanou poštu.

Obvykle mají odeslané maily falešnou hlavičku odesílatele a robot naprosto ignoruje jakékoliv chyby. U spamu jde především o kvantitu, takže když se dvacet třicet procent z několika milionů mailů nedoručí, nikoho to netrápí.

Toto chování je typické pro spam, ale u běžné pošty se s ním nesetkáme. Z toho právě vychází greylisting. Princip je poměrně jednoduchý: Pokud dorazí mail z úplně nové adresy, mail server jej přijme a zapamatuje si tří údaje:

  • IP adresu odesílatele
  • poštovní adresu odesílatele
  • poštovní adresu příjemce

Pak obvykle pošle odesílateli odpověď

450 Requested mail action not taken: mailbox unavailable

a mail jednoduše zahodí. Odeslaná odpověď 450 znamená dočasnou nedostupnost schránky. Sama o sobě neznamená žádnou chybu, ale jen to, že je SMTP server nedostupný. Pro legitimního odesílatele to znamená, že se má pokusit mail doručit později, kdy už to „možná bude fungovat”.

Pokud se jedná o regulérní server, který se řídí RFC 2821, pokusí se později o nové spojení. Po určité době tedy přijde našemu serveru tentýž mail ještě jednou. Ten jej už podle informací, které si uložil, pozná a standardně doručí. Do databáze je pak zapsáno, že byl tento mail ověřen a může se z něj už přijímat pošta běžným způsobem.

Výhody

Výhodou je legitimní přístup k odesílatelům včetně dodržení všech standardů. Greylisting neohrozí komunikaci s běžnými servery, pokud jejich konfigurace neobsahuje nějakou hrubou chybu. Obecně ale problémy nenastávají.

Další velkou výhodou je nízká náročnost greylistingu na systémové zdroje. Některé techniky jako heuristická analýza nebo třeba statistická analýza znamenají pro server poměrně velkou zátěž a v případě, že je příchozí pošty hodně, může to znamenat problém. V případě greylistingu stačí jen odeslat správnou odpověď na příchozí maily.

Z toho samozřejmě plyne také velmi snadná konfigurace a bezproblémové použití této metody. Nemusíte složitě konfigurovat filtry ani server nic učit.

Nevýhody

Hlavní nevýhodou pro uživatele je zpoždění legitimní pošty z nových adres. To se může pohybovat v rozmezí několika desítek minut až hodin. Tuto nevýhodu je potřeba zvážit v případě, že je pro nás důležité okamžité zpracování veškeré pošty.

Problémy mohou také nastat v případě špatně nastaveného MTA, který může považovat chybu 450 za chybu a nebude opakovat pokus o odeslání. Také může dojít k velkému zpoždění mezi první a druhou zprávou a příjemce už může mezi tím záznam z databáze odstranit. Poslední technický zádrhel může nastat ve chvíli, kdy se o znovudoručení pokusí server s jinou IP adresou. Hypoteticky by tato situace mohla nastat v případě nějaké rozsáhlé mailserverové far­my.

Poslední nevýhodou, která mě napadá, je poměrně jednoduchá možnost „prostřelení” tohoto filtru tak, že jednou provedeme opětovné doručení a filtr se na nás už nebude vztahovat. Bude k tomu stačit použít běžný SMTP server. To je ovšem možno řešit dalším doplňujícím spam filtrem nebo třeba blacklistem.

Praktické nasazení

Existuje řada implementací greylistingu, které mohou fungovat jako samostatné SMTP proxy (třeba Spey) nebo jako moduly pro běžné SMTP servery. My si ukážeme řešení s pomocí policy serveru pro Postfix s názvem Postgrey.

Postfix umí od verze 2.1 používat takzvané policy servery, kterým může přenechat filtraci zpráv. Postgrey patří mezi ně a je kompletně napsán v Perlu. Pro jeho instalaci budete potřebovat

  • Perl (verze 5.6.0 a vyšší)
  • Net::Server
  • IO::Multiplex
  • BerkeleyDB (modul pro Perl)
  • Berkeley DB (knihovna verze 4.1 a vyšší)

Samotný balíček s Postgrey získáte z domovských stránek projektu nebo jej najdete ve své distribuci. Má jen 30 KB a obsahuje samotný Perlovský skript, příklad whitelistu a nějakou tu dokumentaci.

Instalace se skládá z několika poměrně jednoduchých kroků:

  1. Vytvořte uživatele postgrey.
  2. Vytvořte adresář, kam si bude program ukládat databázi mailů. Standardně je to  /var/spool/postfix/postgrey
  3. Zapište Postgrey do startovacích skriptů, aby nastartoval jako démon:  postgrey --inet=10023 -d
  4. Do /etc/main.cf přidejte konfiguraci:
    smtpd_recipient_restrictions =
        permit_mynetworks
        reject_unauth_destination
        check_policy_service inet:127.0.0.1:10023
  5. Soubory postgrey_whitelist_clients a postgrey_white­list_recipien­ts zkopírujte do /etc/postfix a upravte si je jak potřebujete. Adresy v  postgrey_whi­telist_recipi­ents nejsou podrobovány greylistingu.

To je vše, Postfix by měl nyní umět greylisting. Protože se pro komunikaci používá síťové rozhraní, může Postgrey běžet i na jiném stroji než Postfix.

root_podpora

Zkušenosti

Praktická zkušenost je velmi dobrá. Zpoždění některých mailů je sice větší (řádově desítky minut), ale pro běžnou práci to nevadí. Účinnost tohoto filtru je velmi dobrá, uvádí se, že je někde mezi 80 a 95 procenty. Z vlastní zkušenosti můžu potvrdit, že z 80 spamů, které dříve denně přicházely, se jich po nasazení greylistingu do pošty dostane asi 6.

Greylisting je velmi účinný způsob, jak se zbavit dotěrného spamu. Přestože někteří pesimisté prorokují, že se časem spammeři naučí jej obcházet, zatím se tak neděje. Možná je to způsobeno nevelkým rozšířením greylistingu.

Používáte greylisting?

Byl pro vás článek přínosný?

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.