SpamAssasin a jeho divotvorné pravidlo

Adam Štrauch 6. 1. 2010

Možná jste zaregistrovali s přelomem roku jeden „závažný“ problém u projektu SpamAssassin. Najednou všechny e-maily dostávaly ± 3 body na svém spamovém účtu. Podle nastavení pak bylo více či méně pro e-mail těžké dostat se pod černou čáru a byl označen za spam. Jde jen o nafouklou bublinu nebo o vážný problém?

SpamAssassin je populární nástroj, který se používá ke kontrole spamu na Linuxu. Vcelku jednoduše se dá spojit s poštovními servery a svou práci dělá na základě pravidel velmi dobře. E-maily, které mu projdou rukou, jsou označkovány číslem tzv. skóre, podle kterého se pak v poštovním klientovi můžete rozhodnout, co s ním uděláte. Pokud je číslo moc vysoké, neobtěžuje se ani s dalším zpracováním a e-mail dokáže i zahodit. Některé servery roztřídí vaši poštu i za vás, ale to už záleží na jejich správci.

Chyba, o které se psalo v linuxových i jiných médiích spočívá v jednom pravidle, které už když nějaký vývojář psal, musela se pod ním klepat židle. Toto pravidlo říká, že všechny e-maily odeslané v roce 2010 až 2099 budou považovány za spam a jejich skóre se zvedne o dva až tři body. V roce 2000 by se mohlo zavedení tohoto pravidla zdát jako dobrý nápad, možná nikdo nečekal, že tu bude SpamAssassin tak dlouho, nicméně na konci roku 2009 to už jako dobrý nápad nevypadá. Pro některé e-maily jsou dva až tři body vražedným skóre, protože nachytají další body na jiných věcech jako je moc velkých písmen, vykřičníky v předmětu nebo nějaká chybějící hlavička. Nakonec se velké množství dobrých e-mailů ocitlo mezi odpadem zvaným spam.

Pravidlo je k nalezení v souboru /usr/share/spamassassin/72_active.cf a je v něm:

##{ FH_DATE_PAST_20XX
header   FH_DATE_PAST_20XX      Date =~ /20[1-9][0-9]/ [if-unset: 2006]
describe FH_DATE_PAST_20XX      The date is grossly in the future.
##} FH_DATE_PAST_20XX 

Popisek pravidla napovídá, že bylo napsáno daleko v minulosti a autor pravděpodobně nepředpokládal, že takové datum někdy nastane. Jednoduchou úpravou se problém zas na deset let vyřeší:

##{ FH_DATE_PAST_20XX
header   FH_DATE_PAST_20XX      Date =~ /20[2-9][0-9]/ [if-unset: 2006]
describe FH_DATE_PAST_20XX      The date is grossly in the future.
##} FH_DATE_PAST_20XX 

O problému jsme psali v pondělí a před námi i po nás další weby. Uživatelé si problému ale mohli všimnout hned, jak dorazila první novoroční přání.

Tohle je jen zlomek stránek, kde se o problému píše. Byl ale opravdu tak velký, že si zasloužil takovou pozornost? Jediný důsledek tohoto „bugu“ bylo, že uživatelé našli svoje e-maily ve spamu, a to ještě ne zdaleka všechny.

Kdo je vrah

Stejně jako jinde, i tady se hledá nějaký viník. Mohli bychom prohledávat repositář a zjistit, kdo tam to pravidlo přidal. Nicméně ve hře jsou ještě administrátoři, kteří nesou zodpovědnost za své uživatele a distributoři, kteří nesou zodpovědnost za svoje dílo.

V červenci minulého roku se do repositáře SpamAssassinu dostal patch, který toto pravidlo opravuje na tvar:

header   FH_DATE_PAST_20XX      Date =~ /20[2-9][0-9]/ [if-unset: 2006] 

Vývojáři svůj software včas opravili, i když změnu nerozdistribuovali. Vina tedy padá někam mezi distributory, kteří měli dost času, aby nová pravidla zavedli, a administrátory, kteří mají na aktualizaci pravidel ve SpamAssasinu nástroj sa-update. Je možné, že u některých distribucí byla pravidla vyřešena už dávno.

Bohužel se do aktualizací pravidel, ani do vydání oprava nedostala, takže chyba tu zůstala dokud se neprojevila. Vina je tedy na straně vývojářů. Nicméně dobrým administrátorům, kteří často aktualizují svá pravidla a kontrolují co se s jejich serverem děje, to muselo přinést jen minimální problémy. I distributoři, resp. lidé starající se o tento konkrétní balíček, si mohli všimnout že něco není v pořádku již před nějakým časem.

Řešení celého problému může být více.

  1. Administrátoři serverů upraví pravidlo
  2. Administrátoři serverů aktualizují pravidla
  3. Distributoři rozšíří do svých distribucí nová pravidla
  4. Distributoři rozšíří do svých distribucí upravené pravidlo

Z toho vyplývá, že na některých systémech stačí jen aktualizovat, což by se mělo dělat pravidelně. Jiné systémy musí být upraveny z nějakého důvodu ručně, pokud ale distributor usoudí, že nová pravidla smysl nemají, aktualizace tuto změnu může zrušit. Ruční změna tak může navodit falešný pocit bezpečí, který se ztratí hned s další aktualizací, nejlépe automatickou.

Úplně nejlepší by byla kontrola na základě provedení jednoduchého výpočtu, kde by administrátor zadal jen počet let, za které bude e-mail považován „moc z budoucnosti“. Vyžadovalo by to ale malé úpravy v parseru pravidel SpamAssassianu.

Anketa

Zasáhla vás také tato "chyba"?

Závěr

Jedná se tedy o skutečný problém? Podle mého názoru nikoli. O poštu uživatelé nepřišli, některé servery to ani nepostihlo, další administrátoři to vyřešili tak rychle, že si toho uživatelé ani nevšimli a těch pár, které to ovlivnilo, pak plní diskusní fóra nekonečnými dotazy na podivné chování poštovního serveru.

Díky rychlému šíření této zprávy společně s řešením si za týden na nějaký problém ani nevzpomeneme. Celé to připomíná počítačový problém přechodu na rok 2000, kdy někteří zlí jazykové tvrdili, že se zhroutí všechny počítače na světě. Nestalo se a o deset let později mohl díky tomu vzniknout problém úplně nový.

Jelikož oprava ze strany vývojářů i některých administrátorů spočívá posunutí data na 2020 až 2099, tak se tu pravděpodobně za deset let opět setkáme.

Našli jste v článku chybu?
Podnikatel.cz: Babiš představil daňovou revoluci Moje daně

Babiš představil daňovou revoluci Moje daně

Lupa.cz: Vydavatelé jsou v háji, ale neumí si to připustit

Vydavatelé jsou v háji, ale neumí si to připustit

120na80.cz: Cestovní nevolnost. Co pomůže?

Cestovní nevolnost. Co pomůže?

DigiZone.cz: Deklarace kompatibility? Jen LG...

Deklarace kompatibility? Jen LG...

Měšec.cz: Udali ho na nelegální software a přišla Policie

Udali ho na nelegální software a přišla Policie

DigiZone.cz: Soud zakázal šíření TV Markíza v ČR

Soud zakázal šíření TV Markíza v ČR

DigiZone.cz: Robinsonův ostrov moderuje Novotný

Robinsonův ostrov moderuje Novotný

Podnikatel.cz: Výpadek internetu a #EET. Co s tím?

Výpadek internetu a #EET. Co s tím?

DigiZone.cz: Slováci první, Češi třetí. Krásný...

Slováci první, Češi třetí. Krásný...

120na80.cz: Krémy, nebo spreje na opalování?

Krémy, nebo spreje na opalování?

DigiZone.cz: Dabingové ceny znají letošní nominace

Dabingové ceny znají letošní nominace

Vitalia.cz: Jíme přesolené potraviny. Zrovna tyhle

Jíme přesolené potraviny. Zrovna tyhle

Lupa.cz: Jaké IoT tarify nabízejí mobilní operátoři?

Jaké IoT tarify nabízejí mobilní operátoři?

Vitalia.cz: Máte chutě? Nejezděte do světa, ale do Dobřichovic

Máte chutě? Nejezděte do světa, ale do Dobřichovic

Podnikatel.cz: Takhle si Babiš představuje nové daně

Takhle si Babiš představuje nové daně

DigiZone.cz: Náhrada za nevrácená zařízení?

Náhrada za nevrácená zařízení?

Vitalia.cz: 5 porcí ovoce a zeleniny: no ale jak na to?

5 porcí ovoce a zeleniny: no ale jak na to?

Podnikatel.cz: 10 citátů Billa Gatese: tesat do kamene

10 citátů Billa Gatese: tesat do kamene

DigiZone.cz: Kanály Novy na Slovensku oficiálně?

Kanály Novy na Slovensku oficiálně?

DigiZone.cz: Satelitní Flix TV vyráží do boje

Satelitní Flix TV vyráží do boje