Egyszerű levelezőlista

A HupWiki-ből...

Hogyan készítsünk egy egszerű levelezőlistát procmaillel

Forrás: http://hup.hu/node/36497, eredeti szerző: apal

Példának csináljunk két független listát, qqriq és torokcsaszar néven:

  • Adjunk a rendszerhez egy új felhasználót, aki a levelezőlistákat fogja karbantartani: adduser maillist.
  • Csináljunk a home-konyvtáron (/home/maillist) belül egy mail nevezetű alkönyvtárat.
  • Adjuk hozzá az /etc/aliases file-hoz a qqriq: maillist és a torokcsaszar: maillist sorokat.
  • Csináljunk egy /home/maillist/.procmailrc.list file-t a következő 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}


  • Csináljunk egy /home/maillist/.procmailrc file-t a következő tartalommal:
     :0: .lock
     * ^TOqqriq
     {
             BASE="qqriq"
             INCLUDERC=$HOME/.procmailrc.list
     }

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


Ez a levelezőlista a következőket "tudja":

  • fel lehet rá iratkozni a `subscribe` tárgyú levelekkel;
  • le lehet róla iratkozni az `unsubscribe` tárgyú levelekkel;
  • minden más levelet továbbküld a listán fentlevő embereknek;
  • a teljes listafolyamat ("ki mikor mit csinalt/írt") rekonstruálható a /home/maillist/<listaneve>.log file és a /home/maillist/mail/<listaneve> inbox-file tanulmányozásával;
  • új lista felvételéhez csak a (3) és (5) lépéseket kell megcsinálni, relatíve teljesen értelemszerűen;
  • nincs race condition, semmi nem kell hozzá, a hozzáferesi jogok localhost-on a klasszikus szisztematikával állíthatóak, könnyű letiltani, könnyű archiválni.
Személyes eszközök