... h1. 5.2.9. 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. h2. 5.2.9.1. 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: {code:title=/usr/local/etc/postfix/main.cf} 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] {code} Ezen túl a _postfix_ könyvtárát át kell helyeznünk a megadott helyre: {code:title=Parancssor} [root@mailman:~]$ mv /var/spool/postfix/ /data/ {code} A _/etc/rc.conf_ állományban tiltsuk le a _sendmail_ futását és engedélyezzük a _postfix_ elindulását: {code:title=/etc/rc.conf} sendmail_enable="NONE" postfix_enable="YES" {code} 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: {code:title=/usr/local/etc/postfix/transport} lists.javaforum.hu relay:[mailman.jails.javaforum.hu]:25 {code} h2. 5.2.9.2. 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: {code:title=Parancssor} [root@mailman:]$ export MAIL_GID=nobody [root@mailman:]$ portinstall -i mailman [...] {code} 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: {code:title=/usr/local/mailman/Mailman/mm_cfg.py} 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') {code} 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: {code:title=Parancssor} [root@mailman:~]$ mv /usr/local/mailman/lists/ /data/ [root@mailman:~]$ mv /usr/local/mailman/archives/ /data/ {code} Majd hozzuk létre a _mailman_ nevű levelezőlistát: {code:title=Parancssor} [root@mailman:~]$ /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... {code} 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: {code:title=/etc/rc.conf} mailman_enable="YES" {code} 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: {code:title=Parancssor} root@mailman:~]$ /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... {code} Ha ezt is hozzáadjuk a _/etc/aliases_ fájlhoz, akkor már működik a levelező listánk... :) h2. 5.2.9.3. 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: {code:title=/usr/local/etc/apache22/Includes/mailman.conf} 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> {code} 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:
|