CRM114, procmail ja Mutt
Viime aikoina on minulle alkanut tulla roskapostia ihmeen paljon. Tästä johtuen päätin, että olisi aika viritellä jonkinlainen roskapostisuodatin. Ensin kokeilen SpamAssassinia seuraten Jari Eskelisen ohjeita. Se ei kuitenkaan aivan ollut sitä, mitä hain. Se ei tuntunut oppivan riittävän nopeasti ja lisäksi se muunsi spämmit aivan ihmeellisiksi. Ei kyseinen ohjelma varmaankaan huono ole, mutta se ei ole oikea minulle.
Niinpä siirryin ohjelmaan, jota olen joskus aiemminkin hyvällä menestyksellä käyttänyt. CRM114 on tekijänsä mukaan erittäin tarkka suodatin. Tämä on kiistelty aihe, mutta omien kokemuksieni mukaan tulos on hyvä ja ennen kaikkea CRM114 oppii nopeasti. CRM114:n koulutuksessa on tärkeää, että sitä opetetaan vain, kun se tekee virheitä. Niinpä sen kannattaakin ottaa käyttöön aivan tyhjältä pöydältä. Aluksi se ei erota viestejä ollenkaan, mutta oppii kyllä nopeasti.
Asiaan. Tämä sivu kertoo, kuinka viritin CRM114:n, procmailin ja Muttin yhteistoimintaa taistelussa roskapostia vastaan. Se on olevinaan kuin opas. Minulle ei tästä kunniaa kannata antaa, sillä oikeastaan tämä on vain suomenkielinen tiivistelmä CRM114 Mailfilter HOWTO'sta.
Opas olettaa, että sinulla on pääsy koneelle, joka vastaanottaa sähköpostisi. Lisäksi sähköpostisi lajitellaan procmailin avulla ja luet postisi Muttilla. Kyseisellä koneella on jokin *nix-tyylinen käyttöjärjestelmä ja osaat myös käyttää sitä komentoriviltä käsin, ainakin kohtuullisesti. Jos ehdot eivät täsmää, no, voithan aina soveltaa.
CRM114
Käyttämälläni Kapsin pääshellipalvelimella lakalla on CRM114 asennettuna, mutta sen voi tarvittaessa hakea osoitteesta http://crm114.sourceforge.net/ tai hyvinvarustetusta pakettienhallinnasta. Ensinmäinen vaihe on luoda hakemisto CRM:n asetuksille ynnä muille tiedostoille ja luoda sinne tarvittavat tiedostot.
[arcatan@lakka:~]% mkdir ~/.crm114 [arcatan@lakka:~]% cd .crm114 [arcatan@lakka:~/.crm114]% touch blacklist.mfp priolist.mfp whitelist.mfp rewrites.mfp [arcatan@lakka:~/.crm114]% cp /usr/share/crm114/mailfilter.cf . [arcatan@lakka:~/.crm114]% cssutil -b -r spam.css [arcatan@lakka:~/.crm114]% cssutil -b -r nonspam.css
Luodut css-tiedostot ovat CRM114:n muistitiedostoja, joiden perusteella se erottaa asialliset viestit roskapostista. Aluksi ne tietysti ovat tyhjät. Samalla komennolla saa niistä jatkossa tilastoja. Rewrites.mfp sisältää asetukset viestien muunteluun siten, että css-tiedostoista voidaan tehdä yleiskäyttöisempiä ja mahdollisesti tarkempia. Muiden mfp-tiedostojen avulla voidaan toteuttaa priorisoitu musta- ja valkolista. En kuitenkaan käytä näitä toimintoja, joten jätin tiedostot tyhjiksi. Lisätietoa asiasta löytyy CRM114 Mailfilter HOWTO'sta.
Mailfilter.cf on suodattimen asetustiedosto. Se kannattaa käydä läpi. Itse käytän seuraavia asetuksia (tässä ovat vain muutetut asetukset):
:add_verbose_stats: /no/ :add_extra_stuff: /no/ :spam_flag_subject_string: // :rewrites_enabled: /no/ :mime_decoder: /normalizemime/
Salasanaa en muuttanut, sillä käytän koulutukseen suoraan ohjelmaa itseään, jolloin salasanaa ei tarvita. MIME-dekooderiksi tulee tietenkin valita sellainen, joka on asennettuna koneelle. Lakalla ei normalizemimeä kirjoitushetkellä ollut, mutta sen saa osoitteesta http://hyvatti.iki.fi/~jaakko/spam/.
procmail
Lakalla procmail on käytössä oletuksena, joten minun täytyi vain muokata ~/.procmailrc :tä. Käyttämäni versio:
MAILDIR=$HOME/Mail DEFAULT=/var/mail/arcatan :0fw: .msgid.lock | /usr/bin/crm -u $HOME/.crm114 /usr/share/crm114/mailfilter.crm :0: * ^X-CRM114-Status: SPAM.* Spam/Kiinni/
Tämä tallentaa kiinni jääneet roskapostit maildir-postilaatikkoon $HOME/Mail/Spam/Kiinni. Muut viestit menevät normaalisti inboxiini.
mutt
Viimeinen silaus on luoda muttiin pikanäppäimet virheellisesti tunnistettujen roskapostien ja asiaviestien hoitelemiseen. Muokkaa ~/.muttrc :tä:
macro index \es "<pipe-entry>crmlearn --learnspam\n<save-entry>=Spam/Opetettu\n" \
"crm114 learn as spam, save in =Spam/Opetettu"
macro index \eh "<pipe-entry>crmlearn --learnnonspam\n" "crm114 learn as ham"
Tunnistamatta jääneen roskapostin kohdalla painamalla Esc-s viesti opetetaan CRM114:lle ja siirretään kansioon =Spam/Opetettu. Vastaavasti roskapostiksi luullun asiaviestin kohdalla painetaan Esc-h. Ainakin itselläni jo parin viestin opetuksen jälkeen spämmit alkoivat soljua roskapostilaatikkoon ja asiaviestit inboxiin aivan oikein.
Lopputulos
Testaa lähettämällä itsellesi viesti, että posti varmasti kulkee. Varsinkin virheellinen .procmailrc voi aiheuttaa hankaluuksia. CRM tallentaa kaiken tulevan postin varmuuden vuoksi ~/.crm114/allmail.txt :iin. Kun posti on jonkin aikaa kulkenut ja olet varma, että kaikki toimii, voit kytkeä tallennuksen pois mailfilter.cf :stä.