Mailmani kasutamine Postfixi ja Debianiga

Allikas: Kuutõrvaja

Sissejuhatus

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

Järgnevas kirjaldatalse sellise eesmärgi saavutamist

  • ühe Mailman eksempari abil peetakse kolme domeeniga seotud postiloendeid, @lists.loomaaed.tartu.ee, @lists.vagunitehas.tartu.ee, @lists.raudteejaam.tartu.ee
  • MTAna kasutatakse Postfixi, kusjuures mainitud domeene kasutatakse ainult eposti jaoks
  • postiloendite haldusliidesed sh arhiivid on ligipääsetavad aadressidelt https://lists.loomaaed.tartu.ee/listinfo ja /admin, https://lists.vagunitehas.tartu.ee/listinfo ja /admin jne

Kirjeldatud moel kasutusel on üks märkimisväärne piirang, listide nimede vasakud pooled peavad olema unikaalsed, st aadressidele info@lists.loomaaed.tartu.ee ja info@lists.vagunitehas.tartu.ee saadetud kirjad jõuavad välja ühte ja samasse listi.

Mailman tarkvara paigaldamine

Tarkvara paigaldamiseks tuleb öelda

 # apt-get install mailman

Seejärel küsitakse, millistes keeltes soovitakse, et Mailman oleks võimeline kasutajaga suhtlema, eriti puudutab see valik, millistes keeltes saab saata kasutajatele automaatselt genereeritud kirju (nt teated listiga liitumise kohta)

Mailman-2.gif

Seejärel küsib installer vaikekeelt, võiks valida en.

Lisaks mailman paketile paigaldatakse automaatlselt ka Apache veebiserver, kuna tavaliselt toimub Mailmani haldamine üle veebiliidese. Paigaldamise käigus tuleb valida kasutatavad lokaadid, mis tähendab seda, millistes keeltes on võimalik mailmani kasutajaliidest tööle lülitada.

Seejärel teatab installer, et

 Missing site list

 Mailman needs a so-called "site list", which is the list from which password reminders and such 
 are sent out from.  This list needs to be created before mailman will start. To create the list, run
 "newlist mailman" and follow the instructions on-screen. Note that you also need to start mailman after
 that, using /etc/init.d/mailman start.

Mailmani seadistamine

Mailmani listihalduse tarkvara esineb arvutis töötava deemoni kujul ning oluliseks seadistusfailiks on /etc/mailman/mm_cfg.py. Selles tuleks teha sellised muudatused

 MAILMAN_SITE_LIST = 'mailman'
 DEFAULT_URL_PATTERN = 'https://%s/'
 PRIVATE_ARCHIVE_URL = '/private'
 IMAGE_LOGOS         = '/images/mailman/'
 DEFAULT_EMAIL_HOST = 'lists.loomaaed.tartu.ee'
 DEFAULT_URL_HOST   = 'lists.loomaaed.tartu.ee'
 add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
 DEFAULT_SERVER_LANGUAGE = 'en'
 USE_ENVELOPE_SENDER    = 0              # Still used?
 DEFAULT_SEND_REMINDERS = 0
 MTA=None
 DEB_LISTMASTER = 'listmaster@lists.loomaaed.tartu.ee'

kus

  • DEFAULT_URL_PATTERN, PRIVATE_ARCHIVE_URL ja IMAGE_LOGOS on olulised seada õigeks enne listide tekitamist, et veebipõhine haldusliides töötaks
  • MTA=None - tulemusena ei genereeri Mailman listide loomisel alias faile (eeldusel, et kasutatakse postfix-to-mailman.py skripti, allpool on selle skripti kasutamist selgitatud)
  • DEB_LISTMASTER - postfix-to-mailman.py skript kasutab selle muutuja väärtust, kuhu saata nö süsteemsed teated

Kui Mailman on seadistatud, siis tuleb tekitada esimene list

 # newlist mailman mart@loomaaed.tartu.ee parool

Seejärel saab listserveri deemoni käivitada

 # /etc/init.d/mailman start

Apache veebiserveri seadistamine

Ülidselt tuleb veebiserver seadistada käima aadressidel

tavalisel moel. Mailmanile spetsiifilise osa kohta on toodud näide failis

 /etc/mailman/apache.conf

Kokkuvõttes võiks olla lists.loomaaed.tartu.ee virtuaalhosti seadistusfail nt sellise sisuga

 <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>

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

Mailman-1.gif

Postfixi seadistamine

Kui 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.

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:
  • kasutada /etc/mailman/mm_cfg.py failis
 MTA = None # No MTA alias processing required
 DEB_LISTMASTER = 'postmaster@loomaaed.tartu.ee'

ning lisaks olemasolevatele ridadele

 # Default domain for email addresses of newly created MLs
 DEFAULT_EMAIL_HOST = 'lists.loomaaed.tartu.ee'
 #-------------------------------------------------------------
 # Default host for web interface of newly created MLs
 DEFAULT_URL_HOST   = 'lists.loomaaed.tartu.ee'
 #-------------------------------------------------------------
 # Required when setting any of its arguments.
 add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)

kaks rida

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

Mailmani haldamine

  • Listimootori adminstraatori parooli muutmiseks tuleb öelda
 # mmsitepass uusparool

Olulised failid asuvad kataloogis /var/lib/mailman

 lrwxrwxrwx  1 root root   24 Feb 10 09:53 Mailman -> /usr/lib/mailman/Mailman
 drwxrwsr-x  4 root list 4096 Feb 10 09:53 archives
 lrwxrwxrwx  1 root root   20 Feb 10 09:53 bin -> /usr/lib/mailman/bin
 lrwxrwxrwx  1 root root   24 Feb 10 09:53 cgi-bin -> /usr/lib/cgi-bin/mailman
 lrwxrwxrwx  1 root root   21 Feb 10 09:53 cron -> /usr/lib/mailman/cron
 drwxrwsr-x  2 root list 4096 Feb 10 22:58 data
 lrwxrwxrwx  1 root root   25 Feb 10 09:53 icons -> /usr/share/images/mailman
 drwxrwsr-x  5 root list 4096 Feb 11 01:04 lists
 lrwxrwxrwx  1 root root   17 Feb 10 09:53 locks -> /var/lock/mailman
 lrwxrwxrwx  1 root root   16 Feb 10 09:53 logs -> /var/log/mailman
 lrwxrwxrwx  1 root root   21 Feb 10 09:53 mail -> /usr/lib/mailman/mail
 drwxr-sr-x 37 root list 4096 Feb 10 09:53 messages
 lrwxrwxrwx  1 root root   26 Feb 10 09:53 pythonlib -> /usr/lib/mailman/pythonlib
 drwxrwsr-x 11 list list 4096 Feb 10 10:57 qfiles
 lrwxrwxrwx  1 root root   24 Feb 10 09:53 scripts -> /usr/lib/mailman/scripts
 drwxrwsr-x  2 root list 4096 Jan 26 21:52 spam
 lrwxrwxrwx  1 root root   12 Feb 10 09:53 templates -> /etc/mailman
 drwxrwsr-x  4 root list 4096 Feb 10 09:53 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 moodustamiseks tuleb öelda

# newlist listinime@domeeninimi halduri@epostiaadress halduriparool

Listi seadistuse saab esitada tekstilisel kujul öeldes

# config_list -o - listinimi

Alternatiiviks on küsida seadistusfaili kui Pyhtoni pickle formaadis faili dumpi

# /usr/lib/mailman/bin/dumpdb /var/lib/mailman/lists/listinimi/failinimi.pck

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

General Options

  • real_name - listi nimi, kasutatakse listi aadressis, vasakul @ märki ja reeglina näidatakse listi tekitamisel
  • owner - listi halduri aadress, sinna saadab listimootor erinevaid automaatselt genereeritud teateid; kasutajate aadressil listinimi-owner@domeeninimi kirjad saadetakse samuti sellele aadressile (või neile aadressidele)
  • 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
  • max_message_size - listimootori poolt töödeldava kirja maksimaalne suurus, ehk on tänapäeval 8M sobiv kui rahvas saadab ka kirja lisasid
  • send_reminders - kas saadetakse listi liikmetele igakuiseid meeldetuletusi liikmeks olemise kohta koos kasutaja parooliga

Passwords

  • listi haldusi ja moderaatori paroolide määramine

Membership management

  • Listi liikmete lisamine, eemaldamine jm haldus

Privacy Options -> Subscription rules

  • 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
  • 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

  • archive - määrab, kas listi kirjad arhiveeritakse listserveris
  • 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

Millistesse listidesse kasutaja kuulub küsimine, nt

$ for i in `/usr/sbin/list_lists -b`; do if /usr/sbin/list_members $i | \
  grep 'priit@loomaaed.tartu.ee' > /dev/null; then echo on listi $i liige; fi ; done

Selleks, et saada teada, millisesse domeeni mõni list kuulub sobib öelda nt

$ for i in *; do echo -n "$i: "; /usr/lib/mailman/bin/dumpdb /var/lib/mailman/lists/$i/config.pck | \
  grep host_name | grep -v footer; done

Subscription requests ja pending messages

Listiga liitumissoovid ja andmed töötlemist ootavate kirjade kohta on salvestatud faili request.pck, mida saab samuti lugeda käsuga dumpdb

# /var/lib/mailman/lists/listinimi/request.pck

Töötlemist ootavad kirjed ise asuvad kataloogis /var/lib/mailman/data hldmsg-listinimi-n.pck nimelistest failides, mis on jällegi Pyhtoni pickle formaadis.

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

Mailmanile peale paigaldamist uue keele toe lisamine

Kuigi veebipõhise kasutajaliidese abil on võimalik valida terve hulga keelte seast, millises keeles Mailman kasutajaga suhtleb, toimib ta täieliselt, st nii veebiliides kui automaatselt kasutajatele saadetavad kirjad ainult neis keeltes, mis asuvad /etc/mailman kataloogis. Nt eesti keele puhul peab seal olema kataloog

 /etc/mailman/et

Nende kataloogide tekitamiseks tuleb öelda soovitavalt töötava Mailmani tingimustes

 # dpkg-reconfigure mailman

Seejärel esitatakse kasutajale diagloog

 For each supported language, Mailman stores default language specific texts in /etc/mailman/LANG/ giving
 them conffile like treatment with the help of ucf. This means approximately 150kB for each supported
 language on the root file system. If you need a different set of languages at a later time, just run
 dpkg-reconfigure mailman.                                        | 
  
 NOTE: Languages enabled on existing mailing lists are forcibly re-enabled when deselected and mailman needs
 at least one language for displaying its messages.
 
 Languages to support:
 ...

dpkg-reconfigure käivitab automaatselt Mailmani protsessid.

Märkused

  • Tõlkes paranduste tegemiseks on sobiv parandada tekstifail /var/lib/mailman/messages/et/LC_MESSAGES/mailman.po ja öelda
 # cd /var/lib/mailman/messages/et/LC_MESSAGES
 # /usr/lib/mailman/bin/msgfmt.py mailman.po

Tulemusena genereeritakse nn GNU message catalog formaadis samanimeline .mo lõpuga fail. Mailmani jaoks kehtestub muudatus koheselt, st ei ole tarvis protsessidega midagi teha.

Mailmani uuendamine 2.1.5 -> 2.1.11

Kuigi antud juhul on tegu konkreetse versiooniuuenduse kirjeldusega võib saada siit ideid ka muudeks juhtumiteks. Abiks materjal konkreetseks juhtumiks on www.list.org pealt kopeeritud tar.gz arhiivis UPGRADE failis.

Sammud

  • Vana ja uus listimootor käivad erinevates arvutites ja mõlema töö lõpetada.
  • Kopeerida arhiivid kataloogist /var/lib/mailman/archives ümber uude kohta.
  • Kopeerida listide seadistused kataloogist /var/lib/mailman/lists/listinimi uude kohta.
  • Kopeerida ajutiselt peatatud failid /var/lib/mailman/data/heldmsg-* ümber uude kohta.
  • Käivitada uues kohas listimootor ja veenduda veebipõhises haldusliideses, et seadistused on tulnud ilusti üle, uurida logi.

Kasulikud lisamaterjalid