FreeBSD – mailman

Levelezőlisták

A levelezőlista kiszolgálók alapvető feladata, hogy egy üzenetet több email címre juttasson el, s viszonylag kevés élőmunkával valósítsák meg a felhasználók kezelését, a legjobb, ha maguk a felhasználók képesek feliratkozni, leiratkozni illetve egyéb műveleteket végezni. Erre a célra a mailman jó választás lehet, mivel ez a program már bizonyított az viszonylag hosszú élete során.

Klónozzuk a template fájlrendszert, hozzuk létre belőle a mailman jail-t, hozzunk létre egy új fájlrendszert, amelyet csatoljuk a jail /data helyre. Állítsuk be a jail paramétereit, indítsuk el, majd telepítsük fel a postfix programot, a mailman programot (a POSTFIX opcióval), illetve egy apache is kell (apache 2.2.x), amely majd a webes felületet kezeli.

A postfix beállításai

A postfix beállítása már szinte rutin kell legyen, az alábbi részletet kell a main.cf végére írnunk:

queue_directory = /data/postfix
myhostname = mailman.jails.javaforum.hu
mydomain = mailman.jails.javaforum.hu
myorigin = mailman.jails.javaforum.hu
mydestination = mailman.jails.javaforum.hu, lists.javaforum.hu
mynetworks = 127.0.0.0/8, 192.168.1.0/24, 192.168.2.0/24

alias_maps = hash:/etc/aliases
relayhost = [mail.jails.javaforum.hu]

Ezen túl a postfix könyvtárát át kell helyeznünk a megadott helyre:

$ mv /var/spool/postfix/ /data/

A /etc/rc.conf állományban tiltsuk le a sendmail futását és engedélyezzük a postfix elindulását:

sendmail_enable="NONE"
postfix_enable="YES"

A postfix ezzel üzemkész, egyedül arra kell figyelni, hogy a mail jail-ben futó postfix tudjon a mailman jail-ben használt lists.javaforum.hu doménről, egyszerűen csak hozzá kell adnunk a spam.javaforum.hu doménhez hasonlóan a transport adatbázishoz:

lists.javaforum.hu      relay:[mailman.jails.javaforum.hu]:25

A Mailman beállításai

A mailman telepítése előtt be kell állítani egy környezeti változót, mivel hiába mondjuk meg, hogy postfix a levelezőszerver, a fordítás során hibásan állítja be a szkriptek csoportát:

$ export MAIL_GID=nobody
[root@mailman:]$ portinstall -i mailman
[...]

A Mailman a /usr/local/mailman könyvtárban lakik, a részletes beállításait most mellőzném, a lényeg, hogy vegyük hozzá az mm_cfg.py fájl végére a beállításainkat:

SMTPHOST = 'mail.jails.javaforum.hu'
DEFAULT_URL_HOST = 'lists.javaforum.hu'
DEFAULT_EMAIL_HOST = 'lists.javaforum.hu'
VIRTUAL_HOSTS.clear()
add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)

LIST_DATA_DIR = os.path.join('/data', 'lists')
PUBLIC_ARCHIVE_FILE_DIR = os.path.join('/data', 'archives', 'public')
PRIVATE_ARCHIVE_FILE_DIR = os.path.join('/data', 'archives', 'private')

A szervernevek megadásán kívül gyakorlatilag arra utasítjuk, hogy a listák adatait és az archívumot a /data alatt keresse. Ehhez természetesen át kell azokat mozgatni oda:

$ /usr/local/mailman/bin/newlist mailman
Enter the email of the person running the list: info@javaforum.hu
Initial mailman password:
To finish creating your mailing list, you must edit your /etc/aliases (or
equivalent) file by adding the following lines, and possibly running the
`newaliases' program:

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

Hit enter to notify mailman owner...

Az itt listázott sorokat adjuk hozzá a /etc/aliases állományhoz, majd futtassuk le a `newaliases` parancsot. A mailman és a postfix most már képes lesz együttműködni, csak hozzá kell adnunk a /etc/rc.conf állományhoz:

mailman_enable="YES"

A mailman részletes beállításaira most nem térnék ki – azt olvashatjuk a program dokumentációjában. A lényeg az, hogy a levelezőlistát két irányból érhetjük el, az egyik irány a levelezés, a másik irány a webes felület. A webes felületet tegyük félre kicsit, foglalkozzunk az email címekkel. A mailman címei virtuális címek, ha azokra érkezik egy levél, akkor a postfix az aliases adatbázis alapján elindítja rá a mailman megfelelő programját.

Új levelezőlista felvételéhez egyszerűen a mailman newlist programját kell használnunk:

$ /usr/local/mailman/bin/newlist
Enter the name of the list: kocsma
Enter the email of the person running the list: info@javaforum.hu
Initial kocsma password:
To finish creating your mailing list, you must edit your /etc/aliases (or
equivalent) file by adding the following lines, and possibly running the
`newaliases' program:

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

Hit enter to notify kocsma owner...

Ha ezt is hozzáadjuk a /etc/aliases fájlhoz, akkor már működik a levelező listánk…

A mailman webes felülete

A mailman alatt vannak perl alapú cgi-bin programok, amelyek webes felületet állítanak elő, s ezekhez kell egy olyan webszerver, amely képes cgi-bin futtatására. Egy Apache erre a feladatra kissé túlzás, de megteszi…

Vegyünk fel az apache22 alá egy új virtuális host-ot:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin auth.gabor@javaforum.hu
    DocumentRoot /usr/local/www/
    ServerName lists.javaforum.hu

    <Directory "/data/archives/public/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>

    <Directory "/usr/local/mailman/cgi-bin/">
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
    </Directory>

    Alias /pipermail/ "/data/archives/public/"
    ScriptAlias /mailman/ "/usr/local/mailman/cgi-bin/"
</VirtualHost>

Ha felvesszük a /etc/rc.conf állományban az apache22 elindítását, majd elindítjuk az Apache szolgáltatást, akkor az vígan kiszolgálja mailman igényeit, bár ennél többre is képes, kicsit vágjuk vissza az igényeit. Ha csinálunk át átmeneti átirányítást a 192.168.2.8:80 port felé, akkor ki is tudjuk próbálni, hogy jól működik-e. Az Apache alapból nem képes naplózni a Syslog használatával, alapból a /var/log/ könyvtárba írja a httpd-access.log illetve a httpd-error.log fájlba vég nélkül az információkat, így a jail fájlrendszere hamar megtelik. Valamelyik korábbi bejegyzésben leírtam, miképp kell az Apache kiszolgálót Syslog használatára kényszeríteni.

Leave a Comment

Scroll to Top