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:
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.
{info}
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. A [Webszerver|FREEBSD:Web] fejezetben leírtam, miképp kell az _Apache_ kiszolgálót Syslog használatára kényszeríteni.
{info}
----
[Előző fejezet|FREEBSD:Mail spam] [Tartalomjegyzék|FREEBSD:FreeBSD in my server] [Következő fejezet|FREEBSD:PostgreSQL]
----
Auth Gábor [auth.gabor@javaforum.hu|mailto:auth.gabor@javaforum.hu]
----
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:
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.
{info}
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. A [Webszerver|FREEBSD:Web] fejezetben leírtam, miképp kell az _Apache_ kiszolgálót Syslog használatára kényszeríteni.
{info}
----
[Előző fejezet|FREEBSD:Mail spam] [Tartalomjegyzék|FREEBSD:FreeBSD in my server] [Következő fejezet|FREEBSD:PostgreSQL]
----
Auth Gábor [auth.gabor@javaforum.hu|mailto:auth.gabor@javaforum.hu]
----