Traženje igle u stogu sijena: grepmail

Snaći se u sve većoj količini maila kojeg primamo je sve teže. Ukoliko pri tome napomenemo kako mnogi imaju višegodišnje arhive, sasvim je jasno da "stog sijena" iz naslova svake godine biva sve veći. Većina korisnika, pretpostavljamo, svoj mail čuva na klijentskoj strani (Thunderbird, Outlook), te se pouzda u ugrađene tražilice kako bi našli neki stari mail koji im je potreban. Ovaj pristup ima sve mane koje se pojavljuju kad se podaci nalaze na korisničkom računalu: kvarovi diskova, virusi, krađe laptopa - sve to može dovesti do gubitka vaših podataka. Pri tome je sasvim uobičajeno da korisnici nerado rade zaštitne kopije, pa se ne može doći do podataka iz zaštitne kopije (backupa), jer backup jednostavno ne postoji.

Čuvanje maila na samom poslužitelju, s druge strane, ima smisla. Poslužitelji imaju kakav-takav sustav zaštitnih kopija, dostupni su s bilo kojeg drugog računala (bilo preko korisničke ljuske, bilo POP3/IMAP protokolima ili webmailom). Današnje brzine procesora i jeftin diskovni prostor ne sprječavaju čuvanje čak i velikih korisničkih pretinaca e-pošte. Snalaženje pri tome olakšavaju neki alati, poput grepmaila.

Radi se o alatu kojem ime govori sve (kao i mnogim drugim alatima): pretražuje pretince e-pošte u potrazi za zadanim kriterijima. A grepmail podržava zaista sve: pretražuje po datumu, pošiljatelju, primatelju, svim zaglavljima, sadržaju i tako dalje. Pri tome mu ne smeta ni ako je pretinac komprimiran sa gzip-om...

Grepmail se poziva slično kao i druge naredbe:

$ grepmail [opcije] [mailbox]

U ovisnosti o odabranim opcijama, grepmail će isfiltrirati odabrani pretinac i rezultat ispisati na standardni izlaz. Kako je ovo nepraktično, najbolje je izlaz preusmjeriti u datoteku, sa standardnim znakom ">", npr:

$ grepmail -b upgrade /var/mail/korisnik > search

Gornja će naredba potražiti riječ "upgrade" u svim vašim porukama u dolaznom pretincu i kreirati datoteku "search" sa isfiltriranim porukama. Ona je u standardnom mbox formatu i može se pročitati sa bilo kojim programom za čitanje pošte, uključujući alpine i mutt. Potrebno je samo pokrenuti vaš program sa odgovarajućom opcijom:

$ alpine -f search
...
$ mutt -f search

Nakon što ste pronašli što vas zanima, potrebno je jednostavno obrisati datoteku s rezultatima. No, postoje i dva alata koji dodatno olakšavaju uporabu grepmaila, na način da primaju sve parametre grepmaila, provode pretragu, kreiraju datoteku s rezultatima, pokreću odgovarajući mail klijent, te nakon uporabe brišu privremenu datoteku s rezultatima.

Za korisnike programa mutt, možete skinuti skriptu "grepm" na adresi http://www.barsnick.net/sw/grepm.html, dok za korisnike programa pine možete rabiti "grepine" na adresi http://www.dfki.de/~pietsch/software. U trenutku pisanja teksta skripta je bila nedostupna, pa je zato možete skinuti ovdje (možete maknuti ekstenziju .txt).

Uz paket grepmail dolazi uobičajena dokumentacija u /usr/share/doc/grepmail i standardna stranica manuala. Ipak, kroz primjere je, vjerujemo, najlakše učiti, pa ćemo navesti nekoliko češćih načina primjene grepmaila.

Ispis broja poruka u odabranom pretincu:

$ grepmail -r . $HOME/mail/saved-messages
saved-messages: 8

Ispis broja poruka, ali rekurzivno kroz sve direktorije (rekurzija se, naravno, može primjeniti i na druge načine pretrage, ne samo na ispis broja poruka):

$ grepmail -R -r . $HOME/mail
2008/incoming-mail-jan-2008: 731
2008/sent-mail-jan-2008: 81
...
2008/incoming-mail-oct-2008: 889
2008/incoming-mail-nov-2008: 777

Ispis svih poruka od korisnika "Pero" (prezime nije bitno), rekurzivno kroz cijeli mail direktorij (pretražuju se samo zaglavlja zbog opcije -h):

$ grepmail -R -h "^From:.*Pero" $HOME/mail

Ispis svih poruka koje su poslane ili primljene s neke e-maila adrese, rekurzivno (opcija -Y omogućava prepoznavanje i razlomljenih zaglavlja i automatski uključuje opciju -h):

$ grepmail -R -Y "(^TO:|^From:)" neka@email.adresa $HOME/mail

Grepmail ima velike mogućnosti filtriranja po datumu (opcija -d), zahvaljujući Perl modulu Date::Manip. Također, grepmail možete ulančavati (pipeati), isto kao i većinu drugih naredbe.

Ispis svih poruka poslanih jučer, ali koje ne sadržavaju (opcija -v) riječi "rezultati" ili "mjerenja" (pretraga je case-insensitive zbog opcije -i):

$ grepmail -d yesterday sent-mail | grepmail -iv "(rezultati|mjerenja)"

Ispis svih poruka primljenih između 1. prosinca i 10. prosinca 2008:

$ grepmail -d "between 2008-12-01 and 2008-12-10" /var/mail/korisnik

Ispis svih poruka koje sadrže riječ "izvješće" i poslane su poslije 8 sati na određeni datum:

$ grepmail -b "izvješće" -d "after 08:00 2008-12-16" sent-mail

Ispis svih poruka pristiglih od korisnika "Marko" nakon drugog ponedjeljka u prosincu 2008. godine:

$ grepmail -h "From:.*Marko" -d "after 2nd monday in december 2008" /var/mail/korisnik

 

 

Kuharice: 
Vote: 
5
Vaša ocjena: Nema Average: 5 (1 vote)