Základním kamenem greylistingu je jednoduchá myšlenka: slušný program pro přepravu pošty (MTA, Mail Tranfer Agent) při neúspěchu dopis zařadí do fronty a po určité přestávce se jej pokusí doručit znovu. Naproti tomu drtivá většina spamu je rozesílána specializovanými programy, které se snaží co nejrychleji distribuovat dopis maximálnímu možnému počtu příjemců. Nemají čas se s ním příliš párat, a pokud se jej nepodaří doručit rovnou, nechají věc být a zkusí to jinde.
Greylisting je implementován právě v MTA na straně příjemce. Kdykoli jej kontaktuje počítač a nabídne mu k doručení dopis, vytvoří si pro něj identifikátor v podobě trojice:
- IP adresa odesílajícího stroje,
- odesílatel podle SMTP obálky,
- příjemce podle SMTP obálky.
Jakmile je trojice kompletní, nahlédne do databáze, zda se jedná o známého komunikačního partnera. Pokud ano, dopis normálně přijme a doručí. Jestliže se ale jedná o dosud neznámou trojici, odmítne dopis převzít a ohlásí odesílajícímu stroji dočasnou nedostupnost služby. Zároveň si trojici zavede do databáze a nastaví si u ní časovač, že po určenou dobu (implicitně jednu hodinu) bude další dopisy se stejnou trojicí odmítat.
Podle pravidel SMTP má odesílající v takovém případě s určitými přestávkami opakovat své pokusy. Pokud se tak stane po uplynutí zmiňované hodiny, přijímající MTA se ze své databáze dozví, že doba blokování pro danou trojici již vypršela a že zřejmě někdo skutečně vážně usiluje o doručení dopisu. Proto změní záznam v databázi, dotyčnou trojici povolí a dopis přijme. Zároveň nastaví záznamu povolujícímu trojici velkou životnost (více než měsíc), která se navíc při každém úspěšně doručeném dopisu prodlužuje. Tím je zajištěno, že dopisy od obvyklých partnerů budou při doručování zpožděny jen jednou – když se jim odpovídající trojice objeví poprvé.
Výraznou výhodou je i to, že dopis je odmítnut už v úvodní fázi SMTP komunikace (po ohlášení odesilatele a adresáta) a samotný se vůbec nepřenáší. To ušetří jednak přenosovou kapacitu sítě, jednak výpočetní výkon přijímajícího stroje. U dnes obvyklých metod zjišťování spamů analýzou obsahu je dopis přijat, po té musí být analyzován, a je-li klasifikován jako spam, zahodí se. To vše u greylistingu odpadá.
I zakázaný záznam má životnost (implicitně čtyři hodiny). Pokud se do té doby nikdo nepokusí doručení zopakovat, bude záznam z databáze odstraněn, jako by se trojice nikdy nevyskytla. Tím je zaručeno, že záznamy vzniklé pokusy o doručení spamu nebudou zbytečně zabírat místo v databázi.
Když jsem si pročítal popsaný základní mechanismus, hned měl napadlo: kdybych byl autorem programu pro distribuci spamu a dozvěděl se o existenci tohoto mechanismu, obešel bych jej velmi jednoduše. Prostě bych rozeslal dopisy jako obvykle a po uplynutí řekněme dvou hodin bych je rozeslal úplně stejně ještě jednou. Uživatelé bez greylistingu by tak dostali příležitost prodloužit si penis hned dvakrát, u těch ostatních bychom se svou báječnou nabídkou prorazili alespoň napodruhé.
Autoři greylistingu jsou si tohoto problému vědomi, a proto doporučují nepoužívat jej jako jedinou metodu, ale jako doplněk dalších mechanismů – blacklistů pro blokování strojů známých jako distributoři spamu, analýzy obsahu a podobně. Úvodní hodinový odklad přijetí dopisu dává šanci, že pokud se jedná o spam, byl mezitím jeho zdroj identifikován a zařazen do blacklistu. Takže pokud se později pokusí dopis doručit znovu, bude odmítnut na základě blacklistu, tentokrát definitivně.
V současné době právě blacklisty představují jednu z významných překážek spammerů. Obcházejí je častým střídáním adres, což je přesně to, co zachytí greylisting. Kombinace těchto dvou mechanismů pak nenechává spammerům příliš mnoho manipulačního prostoru. Aby bylo spektrum úplné, počítají autoři i s doplněním whitelistů obsahujících naopak povolené odesílatele.
Greylisting se pochopitelně dá obejít prostřednictvím vhodného zprostředkovatele. Jakmile spammer najde MTA, který je ochotný jeho dopisy převzít a korektně předat dál, má vyhráno. Tady lze pouze doufat, že díky greylistingu a odmítnutým dopisům velmi radikálně nabobtnají fronty korespondence čekající u dotyčného MTA na doručení, což upozorní správce, že se s jeho strojem děje cosi nepatřičného, a donutí ho podniknout adekvátní kroky.
Pokud se rozhodnete greylisting nasadit, je třeba to udělat pro všechny MTA, které jsou vedeny jako příjemci pošty po danou doménu (jsou uvedeny v jejích MX záznamech). Pokud byste to neudělali, spam se může protlačit na některý z nich a odtud už bude korektně doručen. Autoři v takovém případě doporučují, aby všechny MTA pro danou doménu sdílely společnou databázi povolených a zakázaných trojic. Jinak hrozí, že je doručovatel bude střídat a potrvá neúnosně dlouho, než se mu podaří dopis doručit.
Autoři greylistingu sledovali jeho chování po dobu šesti týdnů. Během ní se neuvěřitelných více než 97 procent trojic objevilo jen jednou, aniž by se po odmítnutí někdo pokusil dopis doručit podruhé. Autoři odhadují, že odmítnutím dopisů se spamem ušetřili přenos více než 1,5 GB dat.
Zřetelnou nevýhodou greylistingu je zpoždění v doručování dopisů, které vzniká u neznámých odesilatelů. Ze statistik vyplynulo, že zpožděno bylo téměř 40 procent všech doručených dopisů. Ovšem pokud se vzaly v úvahu jen dopisy, kde byly pro stejnou trojici doručeny alespoň dva dopisy (čili stálé komunikační partnery), počet zpožděných dopisů z této skupiny činí jen čtyři procenta.
Greylisting nepochybně není dokonalý a lze jej i relativně snadno obejít. Ovšem v současné době redukuje objem spamu velmi výrazně a ulehčuje tak dalším mechanismům, určeným pro boj s ním. Navíc dalšími odesilateli, kteří si nedělají starosti s opakováním pokusů o odeslání dopisu, jsou viry. Vzhledem ke značné jednoduchosti nasazení a minimálním nárokům na provoz mi Greylisting připadá jako hodně zajímavý.