sufnituning levlista

Tobbszor ma'r felmerult a problema, hogy kellene levelezo"listakat csinalni, mert ugye ha az ember 1-nel tobb emberrel levelezget, akkor az ma'r levlista. Probalkozik is mindenfelevel (

mailman

, a mi esetunkben, asszem), de install utan nem mukodik, ordogi korbe kerul ("ahhoz hogy csinalj egy uj levlistat piszkalj meg egy ma'r meglevot", de me'g egyetlen lista sem letezik). Mondana' az okos, hogy rtfm meg google, meg anyamtyukja, de nem. Ugyhogy ezennel megosztane'k egy nagyon primitiv, amde egyszerusegeben teljesen hasznalhatonak bizonyult kis howto-t, hogyan csinaljunk levlistat lufibol, szigszalagbol es pezsgo"tablettabol. Eme bejegyze's keretein belul, elfe'r itt is.

A lepesek (pl: "csinaljunk mondjuk ke't fuggetlen lista't,

qqriq

e's

torokcsaszar

ne'ven"):

  • csinaljunk egy juzert, aki a levlistakat kordaban tartja, pl:
    `adduser maillist`

    .

  • csinaljunk a home-konyvtaron (
    /home/maillist

    ) belul egy

    mail

    nevezetu" alkonyvtarat

  • adjuk hozza' az
    /etc/aliases

    filehoz a

    qqriq: maillist

    e's a

    torokcsaszar: maillist

    sorokat.

  • csinaljunk egy
    /home/maillist/.procmailrc.list

    filet, ezzel a tartalommal:

    
            LIST="${BASE}.list"
            LOG="${BASE}.log"
            FROM=".mail.from.${BASE}"
            MAILLIST=`cat ${LIST}`
    
            :0
            * Subject: subscribe
            | awk '{ if ( $1=="From" ) print $2; }' >${FROM} ; \
                    test -f ${LIST} || touch ${LIST} ; \
                    grep -v `cat ${FROM}` ${LIST} >${LIST}.new ; \
                    cat ${LIST}.new ${FROM} >${LIST} ; \
                    echo `date` `cat ${FROM}` subscribed >>${LOG} ; \
                    rm -f ${FROM} ${LIST}.new
    
            :0
            * Subject: unsubscribe
            | awk '{ if ( $1=="From" ) print $2; }' >${FROM} ; \
                    test -f ${LIST} || touch ${LIST} ; \
                    grep -v `cat ${FROM}` ${LIST} >${LIST}.new ; \
                    cat ${LIST}.new >${LIST} ; \
                    echo `date` `cat ${FROM}` unsubscribed >>${LOG} ; \
                    rm -f ${FROM} ${LIST}.new
    
            :0 c
            ! $MAILLIST
    
            :0
            | cat >>mail/${BASE}
    
  • csinaljunk egy
    /home/maillist/.procmailrc

    file-t, ezzel a tartalommal:

    
    :0: .lock
    * ^TOqqriq
    {
            BASE="qqriq"
            INCLUDERC=$HOME/.procmailrc.list
    }
    
    :0: .lock
    * ^TOtorokcsaszar
    {
            BASE="torokcsaszar"
            INCLUDERC=$HOME/.procmailrc.list
    }
    

Es keszen is vagyon. Ez a levlista a kovetkezoket "tudja":
* fel lehet ra' iratkozni a `subscribe` ta'rgyu' levelekkel;
* le lehet rola iratkozni az `unsubscribe` targyu' levelekkel;
* minden mas levelet tovabbkuld a listan fentlevo" embereknek;
* a teljes listafolyamat ("ki mikor mit csinalt/irt") rekonstrualhato a

/home/maillist/<listaneve>.log

file e's a

/home/maillist/mail/<listaneve>

inbox-file tanulmanyozasaval;
* uj lista felve'tele'hez csak a (3) e's (5) lepeseket kell megcsinalni, relative teljesen ertelemszeru"en;
* nincs race condition, semmi nem kell hozza', a hozzaferesi jogok localhost-on a klasszikus szisztematikaval allithatoak, konnyu letiltani, konnyu archivalni, ...

Tehat, annak ellenere, hogy primkonak tunik, egesz jol bevalt ;)

Hozzászólások

lufiból, szigszalagból és persze pezsgőtablettából :) ez jó.

igaziból még nem. Amúgy hogy lehet megmérni a Poynting-vektor irányát? Egyszer olvastam egy NYIFF feladatot, és időnként még mindig eszembe jut :) (merre van az erő, aza a kérdés a távvezeték alatt állva. Én csak addig jutottam, hogy térkép. meg tábla a távvezetéken)