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?
DigiZone.cz: Skylink v 1. polovině srpna ukončí 12 207

Skylink v 1. polovině srpna ukončí 12 207

Měšec.cz: Banky umí platby na kartu, jen to neříkají

Banky umí platby na kartu, jen to neříkají

120na80.cz: Bonbon si schovejte na přistání

Bonbon si schovejte na přistání

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

Měšec.cz: Se stavebkem k soudu už (většinou) nemusíte

Se stavebkem k soudu už (většinou) nemusíte

DigiZone.cz: Hra o trůny: natáčení 7. řady posunuto

Hra o trůny: natáčení 7. řady posunuto

Vitalia.cz: Dermatolog radí: Pozor na citrusové vůně

Dermatolog radí: Pozor na citrusové vůně

Lupa.cz: Japonská invaze. Proč SoftBank kupuje ARM?

Japonská invaze. Proč SoftBank kupuje ARM?

Vitalia.cz: Za zánět močových cest mohou plavky

Za zánět močových cest mohou plavky

Podnikatel.cz: Kanceláře jako kóje? Špatný vtip

Kanceláře jako kóje? Špatný vtip

Měšec.cz: Do ostravské MHD bez jízdenky. Stačí vaše karta

Do ostravské MHD bez jízdenky. Stačí vaše karta

120na80.cz: Úpal vs. úžeh. Co dělat?

Úpal vs. úžeh. Co dělat?

Vitalia.cz: Jak na domácí zmrzlinu?

Jak na domácí zmrzlinu?

Podnikatel.cz: Daň z nemovitosti? Změny budou v říjnu

Daň z nemovitosti? Změny budou v říjnu

Měšec.cz: Investice do drahých kovů - znáte základní chyby?

Investice do drahých kovů - znáte základní chyby?

Měšec.cz: Co s reklamací, když e-shop krachuje?

Co s reklamací, když e-shop krachuje?

Měšec.cz: Kurzy platebních karet: vyplatí se platit? (TEST)

Kurzy platebních karet: vyplatí se platit? (TEST)

Vitalia.cz: Ahold a Billa prodávaly falšované sýry

Ahold a Billa prodávaly falšované sýry

Vitalia.cz: Patří maso do dětského jídelníčku?

Patří maso do dětského jídelníčku?

Podnikatel.cz: Rozhodnuto! Pracující senior penzi nezdaní

Rozhodnuto! Pracující senior penzi nezdaní