Mailman kasutamine FreeBSD'ga

Allikas: Kuutõrvaja

Sissejuhatus

Mailman (ingl. k. postiljon) http://www.list.org/ on postiloendite (ingl. k. list) pidamise tarkvara.

Mailman on populaarne maililisti tarkvara mis sarnaneb tööpõhimõttelt majordomoga v sympaga. Mailmanil on lisaks käsurea utiliitidele ka veebiliides kõigi toimingute jaoks, nagu subscibeerimine, administreerimine ning arhiivide haldus. Nagu enamus muid väärikaid ja mahukaid tarkvarasid sõltub ka mailmani toimimine lisaks veel Apache ning Postfixi olemasolust ning seadistusest

Mailmanil on lisaks käsurea utiliitidele ka veebiliides kõigi toimingute jaoks, nagu subscibeerimine, administreerimine ning arhiivide haldus.

Installi üldised juhendid, peaksid sobima enamusele levinud süsteemidele

Kõigepealt tuleb paigaldada operatsioonisüsteemi vahenditega mailman, postfix ja apache

Soovitavad nende versioonid oleksid mailman 2.1, postfix-2.6, apache 2.2 või kõrgemad, siin palas käsitletakse eelkõige peamiselt nendele versioonidele mailmani seadistamist ja nii kõrgemate kui madalamate puhul võib leiduda minoorseid erinevusi

Mailmani seadistamisel on kaks suur valikut kuidas asja lahendada. Üheks on läbi postfixi transport tabelite ning teiseks kasutades alias faili. Mõlemal on omad eelised ja puudused. Transport toetab lihtsamat nö "elegantsemat" seadistust kuid samas piirab asja selliselt ,et listid vajavad oma isiklikku domeeni kus muu maililiiklus ei toimi. Alias fail on seetõttu ehk sobivam juhtudel kui on vaja siiski ka sama domeeni kasutada nii eposti liigutamiseks kui listide ülalhoidmiseks. Tegemist on ühtlasi ka traditsioonilisema kasutusjuhuga. Kasutades transporti on muidugi võimalik ka aliaste abil anda mõnedele vajalikele listidele kenam aadress

Install FreeBSD süsteemis

Midagi keerulist Linux kasutajatel pole. BSD's postfix kasutajatel tuleb jälgida, et kompileerimisel MAIL_GID oleks järgnevalt kirjeldatud

cd /usr/ports/mail/mailman
make MAIL_GID=mailman install clean

selleks, et võimalik kasutada veebiliidest kujul www.server/mailman

Mailmaini ja Debiani installi ja seadistuse juhend

Kasutusjuhend kuidas seadistada monofunktsionaalset Debiani listiserverit kus kogu domeeni eposti kasutus on seotud postiloendiga ja ainult postiloendiga, siis saab seadistada Postfixi käima lihtsustatud kujul ja otsekohesemalt. Muu hulgas tähendab see seda, et ei pea kasutama aliases'eid.

Täpsemalt tuleb juttu Debian Lenny'st ja Mailman versioonist A.B.C

Mailmaini seadistus Debianis


Postfixi seadistamine Alias failiga

Esiteks tuleb sellisel juhul postfixi main.cf failis tuleks alias_maps reale lisada mailmani aliastabeli askoht

alias_maps = hash:/etc/mail/aliases, hash:/milman/data/aliases

Selle asukoht on viidatud üldiselt tarkvara installides näiteks FreeBSD's on see /usr/local/mailman/data/aliases ja Debianis /var/lib/mailman Vajadusel tuleb appi sõber find koos enda võtmetega

Postfixi seadistamine tööle ilma alias failita

Kui kogu domeeni eposti kasutus on seotud postiloendiga ja ainult postiloendiga, ehk meiliserver täidab vaid listiserveri rolli, siis saab seadistada Postfixi käima lihtsustatud kujul ja otsekohesemalt. Muu hulgas tähendab see seda, et ei pea kasutama aliases'eid.

Sellisel juhul tuleb

   * kasutada /etc/postfix/main.cf failis 
relay_domains = ... lists.loomaaed.tartu.ee, lists.vagunitehas.tartu.ee, lists.raudteejaam.tartu.ee
transport_maps = hash:/etc/postfix/transport
mailman_destination_recipient_limit = 1
   * kasutada /etc/postfix/master.cf failis 
mailman unix  -       n       n       -       -       pipe
flags=FR user=list 
argv=/var/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${mailbox}
   * kasutada /etc/postfix/transport failis 
lists.loomaaed.tartu.ee     mailman:
lists.vagunitehas.tartu.ee  mailman:
lists.raudteejaam.tartu.ee  mailman:

ning lisaks olemasolevatele ridadele kaks rida

add_virtualhost('lists.vagunitehas.tartu.ee','lists.vagunitehas.tartu.ee')
add_virtualhost('lists.raudteejaam.tartu.ee','lists.raudteejaam.tartu.ee')

Mailmani seadistus

Vajalik on seadistada ka mailmani konfiguratsioon paika ja kirjeldada seal domeenid.

Mailmaini enda seadistusfailiks on mm_cfg.py mis asunb kaustas mailman/Mailman Vaikeseadistuste võtmeid näeb sama kausta failist Defaults.py

Seal on rida # Put YOUR site-specific settings below this line.

Mille alla saab lisada enda serveri spetsiifilisi seadeid nagu.

MTA = 'Postfix'
DEFAULT_EMAIL_HOST = 'lists.aadress.ee'
DEFAULT_URL_HOST = 'lists.aadress.ee'
DEFAULT_URL_PATTERN = 'https://%s/mailman/'
PUBLIC_ARCHIVE_URL = 'https://%(hostname)s/pipermail/%(listname)s'
DEFAULT_ARCHIVE = On

# Are archives public or private by default? 0=public, 1=private
DEFAULT_ARCHIVE_PRIVATE = 1
DEFAULT_SERVER_LANGUAGE = 'et'
add_virtualhost('leheke.ee','aadress.ee')

Spamipeletamiseks saab lisada otse mailmani sisse

GLOBAL_PIPELINE.insert(1, 'SpamAssassin')
SPAMASSASSIN_HOST = 'localhost:783'
SPAMASSASSIN_DISCARD_SCORE = 6
SPAMASSASSIN_HOLD_SCORE = 4

Kui Mailman on seadistatud, siis tuleb tekitada esimene list

 # newlist mailman mart@loomaaed.tartu.ee parool

Seejärel saab listserveri deemoni käivitada

Linuxis näiteks käsuga /etc/init.d/mailman start

Kaustad

Olulised failid asuvad kataloogis mailman

ls /usr/local/mailman/
Mailman         aliases.db      cgi-bin         icons           logs            pythonlib       spam
adm.pw          archives        cron            lists           mail            qfiles          templates
aliases         bin             data            locks           messages        scripts         tests
  • /etc/mailman - muu hulgas paigaldatud keeled (milles saadetakse kasutajatele teavitusi jms)
  • lists/test/config.pck - listi test seadistusfail
  • data/adm.pw - listimootori superuseri parool
  • archives - listide arhiivid

Listi loomine

Käivitame käsu newlist, mis asub erinevates os'ides eri kohtades, BSD's näiteks /usr/local/mailman/bin kaustas

küsitakse meilt

Enter the name of the list:

kirjutame test

Järgnevalt listile jääva administraatori mail, kes hakkab saama listiserveri teateid näiteks modereerimisnõuetest

Enter the email of the person running the list:admin@server

Kõige viimasena listi administreerimise parool

Initial testtest password:passa

Viimasena

Hit enter to notify tere owner...

Ja list on loodud.

Automaatselt lisatakse mailmani poolt juba faili /usr/local/mailman/data/aliases read:

## test mailing list
test:              "|/usr/local/mailman/mail/mailman post test"
test-admin:        "|/usr/local/mailman/mail/mailman admin test"
test-bounces:      "|/usr/local/mailman/mail/mailman bounces test"
test-confirm:      "|/usr/local/mailman/mail/mailman confirm test"
test-join:         "|/usr/local/mailman/mail/mailman join test"
test-leave:        "|/usr/local/mailman/mail/mailman leave test"
test-owner:        "|/usr/local/mailman/mail/mailman owner test"
test-request:      "|/usr/local/mailman/mail/mailman request test"
test-subscribe:    "|/usr/local/mailman/mail/mailman subscribe test"
test-unsubscribe:  "|/usr/local/mailman/mail/mailman unsubscribe test"

Ja uuendatakse alias databaset

Mailmani käsud

uuslist = /usr/local/bin/teelist
kustuta = /usr/local/mailman/bin/rmlist
uusparool = /usr/local/mailman/bin/change_pw 

Apache seadistus

Veebiliidese seadistamiseks httpd.conf'i lisada read

ScriptAlias /mailman/ /usr/local/mailman/cgi-bin/
Alias /pipermail/ /usr/local/mailman/archives/public/

Nüüd saame enda uut maililisti admistreerida ja kasutajaid lisada kasutades urli.

http://www.server.ee/mailman/admin/test

Mailman tekitab igale listikasutajale ka parooli, millega nad saavad ise sisse logida.

Listi parooli käsureal muutmiseks anda parool

/usr/local/mailman/bin/change_pw -l test -p parool

Ülidselt tuleb veebiserver seadistada käima aadressidel

Kokkuvõttes võiks olla lists.loomaaed.tartu.ee virtuaalhosti seadistusfail nt sellise sisuga, vajalik loomulikult genereerida veel ssl key'd jms vajalik

 <VirtualHost 10.0.6.221:443>
   ServerName  lists.loomaaed.tartu.ee
   ServerAdmin mart@loomaaed.tartu.ee
   DocumentRoot /srv/www
   ErrorLog     /var/log/apache2/lists.loomaaed.tartu.ee-ssl-error.log
   TransferLog  /var/log/apache2/lists.loomaaed.tartu.ee-ssl-access.log
 
   SSLEngine on
   SSLCertificateFile /etc/apache2/serdid/lists.loomaaed.tartu.ee-200706-200906.crt
   SSLCertificateKeyFile /etc/apache2/serdid/lists.loomaaed.tartu.ee-200706-200906.key
   SSLCACertificateFile /etc/apache2/serdid/ca-sk.crt
   
   <Directory /srv/www>
     Options All
     AllowOverRide None
     Order Allow,Deny
     Allow from All
   </Directory>
   
   RewriteEngine On
   RewriteRule ^/$ https://lists.loomaaed.tartu.ee/listinfo [R]
 
   Alias /pipermail/ /var/lib/mailman/archives/public/
   Alias /images/mailman/ /usr/share/images/mailman/
   ScriptAlias / /usr/lib/cgi-bin/mailman/
  
   <Directory /usr/lib/cgi-bin/mailman/>
     AllowOverride None
     Options ExecCGI
     AddHandler cgi-script .cgi
     Order allow,deny
     Allow from all
   </Directory>
 
   <Directory /var/lib/mailman/archives/public/>
     Options Indexes FollowSymlinks
     AllowOverride None
     Order allow,deny
     Allow from all
   </Directory>
  
   <Directory /usr/share/images/mailman/>
     AllowOverride None
     Order allow,deny
     Allow from all
   </Directory>
 
 </VirtualHost>

Mailmani listide haldus

Kontrolliks sobib proovida logida sisse veebipõhisesse haldusliidesesse kasutades mailman listi parooli, kasutajanime ei pea sisestama.

Mailman-1.gif

Listi moodustamiseks tuleb öelda

 # newlist listinime@domeeninimi halduri@epostiaadress halduriparool

Listi seadistuse saab esitada tekstilisel kujul öeldes

 # config_list -o - listinimi

Uue listi juures võiks pöörata tähelepanu sellistele määratlustele

  • General Options
  1. real_name - listi nimi, kasutatakse listi aadressis, vasakul @ märki ja reeglina näidatakse listi tekitamisel
  2. owner - listi halduri aadress, sinna saadab listimootor erinevaid automaatselt genereeritud teateid
  3. respond_to_post_request - kas listimootor saadab listi kirja saatnud kasutajale tagasi kirja teatega kui tema kirja modereeritakse, soovitav väärtus on No, et internetti mitte risustada
  4. max_message_size - listimootori poolt töödeldava kirja maksimaalne suurus, ehk on tänapäeval 8M sobiv kui rahvas saadab ka kirja lisasid
  • Passwords

listi haldusi ja moderaatori paroolide määramine

  • Membership management

Listi liikmete lisamine, eemaldamine jm haldus

  • Privacy Options -> Subscription rules
  1. advertised - määrab, kas listi nimi esineb listserveri listide nimekirjas aadressil https://lists.loomaaed.tartu.ee/admin/listinimi, võiks valida No, et mitte liigselt tähelepanu tõmmata
  2. subscribe_policy - määrab, mis tingimustel saab tekkida listi uus kasutaja, soovitav on Confirm and approve, et vaikselt ei saaks huvilised ennast ise listi lisada
  • Archival options
  1. archive - määrab, kas listi kirjad arhiveeritakse listserveris
  2. archive_private - määrab, kas listi arhiiv on avalik või privaatne, kusjuures privaatne tähendab, et arhiivi saavad näha vaid listi kasutajad ja nad peavad enda veebiliideses autentima, soovitav valida private

Nö ühe domeeni listide nimekirja esitamiseks tuleb öelda

 # list_lists -V lists.raudteejaam.tartu.ee
  • Liste eemaldamine toimub öeldes, kusjuures listi aadress on listinimi@lists.loomaaed.tartu.ee
 # rmlist listinimi

Kui lisaks kasutada võtit -a rmlist käsu järel, siis eemaldatakse ka kogunenud listi arhiivid.

Listi kõigi seadistusparameetrite esitamiseks tuleb küsida seda otse seadistusfailist, nt listi test puhul

 $ cd /var/lib/mailman/lists/test
 $ /usr/lib/mailman/bin/dumpdb config.pck | less

Igal postiloendil on oma administraator (haldaja; list owner), tavaliselt üks listi liikmetest. Tema ülesandeks on postiloendisse uute liikmete aadresside lisamine ja ka kustutamine. Administraator saab EENetilt vajalikud juurdepääsuparoolid. Postiloendeid saab administraator hallata

veebilehel https://lists.eenet.ee/mailman/admin/listinimi

või e-posti teel, saates selleks käske aadressile listinimi-request@lists.eenet.ee NB! Mõlemal juhul tuleb listinimi tuleb asendada EENetist saadud listi nimega.

Haldamise veebikeskkonnas on olemas eestikeelsed juhendid. Lisaks võib lugeda juhendeid inglise keeles.

Algselt on iga list suletud: kõik mitte-liikmelt tulnud kirjad lähevad esmalt läbivaatajale (kelleks võib olla nii administraator kui eraldi määratud toimetaja) ja alles pärast tema heakskiitu teistele liikmetele. Listi liikmed saavad aga kõik vabalt kirju listi saata. Võimalik on keelata ka liikmetel otse listi kirjutamine: selleks tuleb halduskeskkonnas liikmete nimekirjas teha liikmete juurde märge lahtrisse 'mod'. Lisateave listi liikmele

Iga uus listiliige saab tervituskirja, kus on tema parool ning juhised listi kasutamiseks. Soovitav on see kiri alles hoida.

Listi infolehe veebiaadress on https://lists.eenet.ee/mailman/listinfo/listinimi, kus listinimi tuleb asendada listi nimega. Näiteks listi vagahealist@lists.eenet.ee infoleht on https://lists.eenet.ee/mailman/listinfo/vagahealist Infolehe kaudu saab esitada taotlust listiga liitumiseks, vaadata listi arhiivi, muuta oma seadeid ning ka listist lahkuda. Selleks on lehel olemas eestikeelsed juhendid.

  • Listimootori adminstraatori parooli muutmiseks tuleb öelda
 # mmsitepass uusparool

Listi haldus emaili teel

Listi on võimalik kasutada ja mingilmääral hallata ka emaili vahendusel. Täpsemalt infot võimalustest ja käskudest saab saates emaili aadressile

test-request@lists.eenet.ee

sisuga

help

Näiteks listiga liitumiseks sobib kui saata antud aadressile järgneva sisuga meil

subscribe nodigest 

Mõned abistavad skriptid

Näiteks kõigi listide nimede ja nende omanike saamiseks korraga

#!/bin/sh
for g in $( ls /mail/mailman/lists/ ) ; do
 gfs=`/usr/local/mailman/bin/list_owners $g`
 echo $g $gfs
done

Ning listinfo vaatamiseks aitab käsk

/usr/local/mailman/bin/dumpdb -p /mail/mailman/lists/nimi/config.pck

Mailmani anatoomia

Mailman koosneb kokkuvõtteks tervest peotäiest python keeles kirjutatud deemonitest

Töötavat mailmani illustreerib kenasti allolev protsessitabelist lõigatud pilt

# ps -aux | grep mailman
mailman  26310  0.0  0.7 11040  7164  ??  Is   31Aug09   0:00.02 /usr/local/bin/python2.5 /usr/local/mailman/bin/mailmanctl -s -q start
mailman  26311  0.0  2.2 27420 23036  ??  S    31Aug09  17:59.45 /usr/local/bin/python2.5 /usr/local/mailman/bin/qrunner --runner=ArchRunner:0:1 -s
mailman  26312  0.0  1.4 18204 14948  ??  S    31Aug09   3:14.63 /usr/local/bin/python2.5 /usr/local/mailman/bin/qrunner --runner=BounceRunner:0:1 -s
mailman  26313  0.0  1.2 15132 12000  ??  S    31Aug09   2:06.86 /usr/local/bin/python2.5 /usr/local/mailman/bin/qrunner --runner=CommandRunner:0:1 -s
mailman  26314  0.0  2.7 31612 28400  ??  S    31Aug09  14:07.43 /usr/local/bin/python2.5 /usr/local/mailman/bin/qrunner --runner=IncomingRunner:0:1 -s
mailman  26315  0.0  0.7 11036  7140  ??  S    31Aug09   2:04.94 /usr/local/bin/python2.5 /usr/local/mailman/bin/qrunner --runner=NewsRunner:0:1 -s
mailman  26316  0.0  1.5 18204 15364  ??  S    31Aug09  15:27.54 /usr/local/bin/python2.5 /usr/local/mailman/bin/qrunner --runner=OutgoingRunner:0:1 -s
mailman  26317  0.0  1.3 16156 13020  ??  S    31Aug09   5:24.37 /usr/local/bin/python2.5 /usr/local/mailman/bin/qrunner --runner=VirginRunner:0:1 -s
mailman  26318  0.0  0.7 10012  7072  ??  I    31Aug09   0:00.40 /usr/local/bin/python2.5 /usr/local/mailman/bin/qrunner --runner=RetryRunner:0:1 -s

Mailmani logi

Mailmani protsessid logivad oma tegevusi sellistesse failidesse

 /var/log/mailman# ls -l
 total 72
 -rw-rw-r-- 1 list     list    83 Feb 12 12:04 bounce
 -rw-rw-r-- 1 root     list 16860 Feb 12 17:35 error
 -rw-rw-r-- 1 list     list  1972 Feb 12 18:06 post
 -rw-rw-r-- 1 list     list   729 Feb 12 06:25 qrunner
 -rw-rw-r-- 1 list     list  2549 Feb 12 18:17 smtp
 -rw-rw-r-- 1 www-data list   753 Feb 12 01:43 subscribe
 -rw-rw-r-- 1 list     list  1140 Feb 12 18:17 vette

Listserveri MTA + listimootori läbimisel tekivad kirjast Postfixi logisse sellised sissekanded

 Feb 10 23:05:58 smtp2a postfix/smtpd[28944]: connect from moraal.auul[192.168.2.38]
 Feb 10 23:05:58 smtp2a postfix/smtpd[28944]: E57443E4EC: client=moraal.auul[192.168.2.38]
 Feb 10 23:05:59 smtp2a postfix/cleanup[28947]: E57443E4EC: message-id=<alpine.DEB.1.10.0902102305480.2613@moraal.auul>
 Feb 10 23:05:59 smtp2a postfix/qmgr[25982]: E57443E4EC: from=<mart@loomaaed.tartu.ee>, size=523, nrcpt=1 (queue active)
 Feb 10 23:05:59 smtp2a postfix/smtpd[28944]: disconnect from moraal.auul[192.168.2.38]
 Feb 10 23:05:59 smtp2a postfix/pipe[28998]: E57443E4EC: to=<test@lists.loomaaed.tartu.ee>, relay=mailman, delay=0.3, delays=0.1/0/0/0.2, \
   dsn=2.0.0, status=sent (delivered via mailman service)
 Feb 10 23:05:59 smtp2a postfix/qmgr[25982]: E57443E4EC: removed
 Feb 10 23:05:59 smtp2a postfix/smtpd[28944]: connect from localhost.localdomain[127.0.0.1]
 Feb 10 23:05:59 smtp2a postfix/smtpd[28944]: E2F1E3E4EC: client=localhost.localdomain[127.0.0.1]
 Feb 10 23:05:59 smtp2a postfix/cleanup[28947]: E2F1E3E4EC: message-id=<alpine.DEB.1.10.0902102305480.2613@moraal.auul>
 Feb 10 23:05:59 smtp2a postfix/qmgr[25982]: E2F1E3E4EC: from=<test-bounces@lists.loomaaed.tartu.ee>, size=1445, nrcpt=1 (queue active)
 Feb 10 23:05:59 smtp2a postfix/smtpd[28944]: disconnect from localhost.localdomain[127.0.0.1]
 Feb 10 23:06:00 smtp2a postfix/smtp[28995]: E2F1E3E4EC: to=<priit@loomaaed.ee>, relay=mail.loomaaed.tartu.ee[192.168.96.138]:25, \
   delay=0.11, delays=0.01/0/0.04/0.06, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 906E42CB28)
 Feb 10 23:06:00 smtp2a postfix/qmgr[25982]: E2F1E3E4EC: removed

Logist on ilusti näha süsteemi modulaarsus

  • esmalt võetakse kiri vastu smtpd poolt
  • seejärel antakse kiri edasi pipe abil mailmanile
  • mailman pöördud smtpd poole ja kiri saadetakse süsteemist välja

Arhiivide roteerimine

Vaikimisi tekitab mailman archives/privat kausta kõvasti faile, näiteks kirjad html kujul ning tariga pakitult. Samuti ühe suure mbox formaadis faili kus on kogu listi arhiiv. Mõnede suurte listidega võib see fail kasvatada gigabaitide juurde ning kui neid liste on veel kümmneid või sadu on tulemuseks see, et rsync või mõni muu backupi töövahend võib iga öösel arhiveerida ebapraktiliselt kümmneid lisa gigabaite. Selle probleemi kaotamiseks ametlikku vahendit pole.

Küll aga on olemas roteerimise skript loodud ühe mailmani kasutaja poolt

skripti enda leiab lingilt http://mail.python.org/pipermail/mailman-users/2004-November/040568.html

Lingid

Wikipedia kirjeldus http://en.wikipedia.org/wiki/GNU_Mailman

Mailman gentool http://gentoo-wiki.com/HOWTO_install_Gnu_Mailman

http://www.ahrenstorff.us/articles/mailman.html

http://www.python.org/cgi-bin/faqw-mm.py?req=show&file=faq06.004.htp 6.4. MTA Performance Tuning Tips for Postfix

http://www.python.org/cgi-bin/faqw-mm.py?req=show&file=faq06.006.htp 6.6. Mailman Performance Tuning for Mail Delivery