piler 0.1.11

Az email archivalo projekt halad szepen elore. Most eppen a retention policy-n dolgozom. Ez arra jo, hogy bizonyos leveleket toroljunk az archivumbol. Ez ugy fog majd tortenni, hogy egy cron job minden hajnalban lefut, beolvassa a szabalylistat, majd osszeszedi azokat a leveleket, amelyek x...x+1 nappal ezelott lettek archivalva ES passzol rajuk az adott feltetel, majd naplozas utan torli (ha lehet, akkor) a mellekleteivel egyutt az archivumbol.

Arra gondoltam, hogy a From, To/Cc, Subject, size + attachment type es -size parameterek alapjan lehet majd felteteleket gyartani, opcionalisan ezek logikai AND kapcsolatakent.

Nezzunk par peldat, mire lehet (majd) hasznalni a gyakorlatban. Pl. toroljuk a(z)

- spamkent jelolt leveleket* 30 nap mulva (Subject: =~ /^\[SPAM\]/)
- 8 evnel regebbi, 10 MB-nal nagyobb leveleket (size > 10M)
- 5MB-nal nagyobb video mellekletet tartalmazo leveleket (type =~ /^video/ AND size > 5M)
- APEH 5 evnel regebbi ertesiteseit (From: = no-reply @ apeh.hu)
- tavozott kollega leveleit 2 ev mulva (To: = bela.voltam @ aaa.fu)

*: mondjuk a felismert spamet (amolyan best practice jelleggel) karantenba erdemes tenni (egy archivalast is vegzo kornyezetben), es nem pedig jeloles utan tovabb passzolni a user mailboxaba. Ebben az esetben ugyanis nem tortenhet meg az, ha egy fals pozitiv hiba miatti spam jeloles okan kell torolni 30 nap mulva egy jo levelet...

Meg azon gondolkozom (az implementalas elott), hogy a szabalyokat hogyan vigye be az admin:

a) egy nagy textarea mezoben soronkent egy szabaly (elony: gyorsan meg lehet irni a szabalyokat copy-paste-tel, hatrany: valami parser-t kell ra irnom),
b) egy normalis html form, ahol ossze lehet kattintgatni a szabalyokat (elony: fogja a kezed, hatrany: ha sok szabalyt akarsz, akkor anyazol a vegere).
c) irja meg a megfelelo sql query-t ;-)

Hozzászólások

vdmfec-et használhatnád az archív fájlokhoz.

hmm, akar meg lehetne is. Lehet ezt a cuccot valamilyen library-kent is hasznalni? Preferaltan nem pipe-on keresztul hasznalnam.

Mondjuk nem vilagos, hogy a 'diskette' most mit is jelent? Gondolom, nem floppy diszkrol van szo :-), de egy RAID-be pakolt state-of-the-art HDD-ket azert nem neveznek 'unreliable media'-nak. Ill. nagy hulyeseg az, ha a diszk (blokk) hibakat HW/OS szinten kene kezelni?

Ne bohockodjatok nagyapaval! Avagy az alkotmicsoda asztalara

ok, felirtam a todo listara, aztan atgondolom meg a dolgot, kossz a tippet.

Beepitve nem lesz DVD-re mentes lehetoseg, mert egy cegnek a tobb evi levelezese aligha ferne ra. De az valoszinuleg feature lesz, hogy pl. egy adott levelhalmazt kinyerni az archivumbol pl. az stdout-ra, ami aztan mehet (akar) dvd-re (vagy egy nagyobb pendrive-ra) is, es ott mar jatszhat a vdmfec.

Ne bohockodjatok nagyapaval! Avagy az alkotmicsoda asztalara

- Otlet: legyen a es b is, az elobbit hivjuk advanced modnak :-)
- Kerdes: mekkora melo minden headert tamogatni? Csak azert, mert pl. egy levlistat vagy egy ticket rendszer stuffjait lehet egyszerubb egy mindig letezo header alapjan kizarni, mint subject alapjan bohockodni vele.

--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

- Otlet: legyen a es b is, az elobbit hivjuk advanced modnak :-)

hehe :-)

- Kerdes: mekkora melo minden headert tamogatni? Csak azert, mert pl. egy levlistat vagy egy ticket rendszer stuffjait lehet egyszerubb egy mindig letezo header alapjan kizarni, mint subject alapjan bohockodni vele.

_minden_ header-t nagy melo tamogatni (=kereshetove tenni + kulon tarolni). De ha a levlista subject-jeben van egy azonosito string, pl. [hrgy84-demo-list], akkor megvagyunk.

Btw. a kizaras (=mit ne torolj) helyett en forditva fognam meg a dolgot: mit torolj. Igy ha nem akarod a levlistad dolgait torolni, akkor ne irj ra illeszkedo szabalyt. Ez igy elfogadhato?

Ne bohockodjatok nagyapaval! Avagy az alkotmicsoda asztalara

Partially. Mi van akkor, ha van egy jopofa nagy hatokorrel rendelkezo szabaly ami pont jo lenne nekem - eppen csak a levlistakat nem kene bantania. De ha minden illeszkedo esetet le szeretnek irni, akkor mondjuk ketszaz szabalyt kell felvinnem, ami senkinek se jo.

Mondok egy peldat. Legyen az a szabaly, hogy torlunk minden levelet, ami a "spamelos" cimemre jon, kiveve a levlistas leveleket. Mondjuk, az a kozos bennuk, hogy ket levlistaszerverrol jonnek, de 5-6 lista.

- "spamelos" cim alatt azt az allatfajtat ertem, amire jon mindenfele regelos meg aktivalos meg ilyesmi level, amit a vegen kukazni lehet, de akkor ott fontos.
- Nem alternativa, hogy hasznaljak a levlistakhoz mas cimet
- A problema a valos eletbol valo, talalkoztam mar ezzel a problemaval, csak nyuglodtem vele.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Minel tobb listam lesz, annal hoszabb lesz ez a feltetel. Egy ido utan mar nem is biztos, hogy kezelheto. Nagyon gyorsan meg lehet utalni egy ilyen egysiku rendszert.

Miert gond egyebkent a kizarasok kezelese?
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Legyen adott az alabbi 4 szabaly:

1. torold azokat, amelyek illeszkednek erre a feltetelre
2. ne torold azokat, amelyek illeszkednek erre a feltetelre
3. torold azokat, amelyek illeszkednek erre a feltetelre
4. torold azokat, amelyek illeszkednek erre a feltetelre

Az 1 es 3-4 kitorli azokat, amelyek megfelelnek a felteteleiknek. Na de mit csinalsz a 2. eseten? Kitorolsz mindent, ami nem illeszkedik a 2. szabalyra?

Ez csak ugy mukodhetne, ha az osszes szabalyt egyben ertekelnem ki, azaz lenne egy (ha nalad 200 szabaly lenne amugy) ~30-40kB hosszu szabaly. Ezt sokkal nehezebb implementalni (es ugy megcsinalni, hogy ne lojon labon).

Ne bohockodjatok nagyapaval! Avagy az alkotmicsoda asztalara

Nem, sorban ertekeled ki a szabalyokat, figyelve arra, hogy amit egyszer mar kizartak, azt ne torold ki. Ezeket az itemeket a memoriaban meg lehet jelolni mint "vedett"-ek, es amikor a kovetkezo szabalyt ertekeled ki, akkor figyelsz arra, hogy ahol ott a "vedett" flag, azt mar nem bantod.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

OK, vagom. Viszont korabban azt irtad, hogy ha tobb listad lesz, akkor egyre bonyolultabb lesz definialni. De ahogy latom, akar azt adod meg, hogy mit toroljon, akar azt, hogy mit ne toroljon, igy is, ugy is meg kell adnod a listaidat. Vagy meg mindig nem ertek valamit?

Ne bohockodjatok nagyapaval! Avagy az alkotmicsoda asztalara

Reszben igen, reszben nem. Ha megfigyelted, en csak a listaszervert adtam meg, ami fix, viszont sok listanal se a from se a to nem fix, bizonyos mailman listak latszolag a level eredeti feladoja neveben leveleznek, tehat ott nem tudod megfogni a listat (nem bizhatsz se a feladoban, se a cimzettben). A listakat a legjobban a List- kezdetu headereknel lehet megfogni, itt egyreszt szerepel a lista neve, masreszt a lista szerver neve, ez alapjan dol el, hogy a level listas level, es hogy honnet jott. Ha nekem van 5-6-8-10 listam, de mindez csak 2 szerverrol, akkor nekem lehet, hogy bovul a listam 20-30-ra, de a szerverek listaja csak mondjuk 3-ra vagy 4-re bovul, ami azert egy sokkal kezelhetobb szam. De javits ki, ha tevedek.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

c) helyett: Sieve

SQL-hez kötni szerintem nem túl szerencsés, még konfigurációs szinten sem.

A sieve egy nyelv, es nem egy keresogep. Legalabbis legutoljara a language ezt jelentette az Orszagh szotar szerint.

Gondolom a kerdes felvetoje azert gondolt erre, mert a sieve mar rendelkezik bizonyos tamogatottsaggal, es konnyebb ra GUI-t, web UI-t, wrappert, API-t, egyebet irni, mint valami custom (SQL) nyelvre. Konnyebb mondjuk az osszekattintos feluletet megirni.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

OK, mashogy kerdezem: adott egy csokor sieve szabaly es egy nagy halom mar tarolt level. Hogy hozom ossze a kettot? Mert az ok, hogy amikor beesik a level, es a sieve-et tamogato MTA/LDA/... a szabalyoknak megfeleloen tudja szortirozni. De itt nem ez a helyzet, mert a leveleket mar regen letaroltuk, es a metaadatok sql-ben vannak...

Ne bohockodjatok nagyapaval! Avagy az alkotmicsoda asztalara