(Felhasználási feltételek a cikk végén.)
Előfeltételek: beállított, tesztelt és működő Postfix (tudjon leveleket küldeni és fogadni) és Apache.
Feltevések: gépünk IP-címe 1.2.3.4, hostneve foo. A Postfixnek beállított myhostname mondjuk domain1.hu. A gép elérhető foo.domain1.hu névvel is. A @domain1.hu, @domain2.hu és @domain3.hu leveleit kezeljük, mindet virtuálisan (azaz mindegyik domain elsődleges MX-e 1.2.3.4). A foo.domain1.hu számára nem szükséges MX-et bejegyeztetni. Apache webszervert használunk, mindegyik domain külön VirtualHost bejegyzéssel rendelkezik; a foo.domain1.hu-t állítottuk be https-en (azaz az 1.2.3.4 IP-hez tartozó biztonságos domain a foo.domain1.hu). Bonyolításképpen https-en tesszük elérhetővé a Mailman felületeit.
Telepítés: mi sem egyszerűbb: pacman -S mailman.
Beállítás: több dologra is oda kell figyelnünk, hiszen a Mailman mind levelező, mind böngészőprogramból elérhető.
Apache beállítása: /etc/httpd/conf/ssl.conf végére:
ScriptAlias /mailman/ /home/mailman/cgi-bin/ Alias /pipermail/ /home/mailman/archives/public/ <Directory /home/mailman/archives/public> Options FollowSymLinks </Directory>
Postfix beállítása: az /etc/postfix/main.cf-ben ellenőrizzük (vagy állítsuk be) a következőket:
recipient_delimiter = + transport_maps = hash:/etc/postfix/transport mailman_destination_recipient_limit = 1 relay_domains = foo.domain1.hu
Ugyanitt az alias_maps-hez adjuk hozzá a következőt (a már ottlevő dolgok meghagyásával, vesszővel elválasztva):
hash:/home/mailman/data/aliases
Az /etc/postfix/transport-hoz adjuk hozzá a következő sort:
foo.domain1.hu mailman:
Dolgoztassuk fel ezt a fájlt:
postmap /etc/postfix/transport
Az /etc/postfix/master.cf-hez adjuk hozzá a következő sorokat:
mailman unix - n n - - pipe flags=FR user=mailman:nogroup argv=/home/mailman/postfix-to-mailman.py ${nexthop} ${user}
Mailman beállítása: több részből áll. A programokat mindig /home/mailman könyvtárban állva kell indítani. Először ellenőrizzük a jogosultságokat: bin/check_perms. Ha hibát talál, rootként javítható bin/check_perms -f futtatásával. A privát archívumokról vegyük le a world-executable bitet:
chown o-x archive/private
Töltsük le a postfix-to-mailman szkriptet, a fentieknek megfelelően tegyük a /home/mailman/postfix-to-mailman.py helyre, és adjunk rá futtatás jogot:
chmod o+x /home/mailman/postfix-to-mailman.py
A fájl elején állítsuk be a következő sorokat:
MailmanHome = "/home/mailman"; MailmanOwner = "postmaster@domain1.hu";
A listák általános beállításait a /home/mailman/Mailman/mm_cfg.py fájlban végezzük el, írjuk a végére ezeket a sorokat:
MTA = 'Postfix' DEFAULT_EMAIL_HOST = 'foo.domain1.hu' DEFAULT_URL_HOST = 'foo.domain1.hu' add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST) DEFAULT_SERVER_LANGUAGE = 'hu' DEFAULT_URL_PATTERN = 'https://%s/mailman/' PUBLIC_ARCHIVE_URL = 'https://%(hostname)s/pipermail/%(listname)s'
Állítsuk be a Mailman aliasait, futtassuk a következőket:
bin/genaliases cd data chown mailman aliases aliases.db chmod g+w aliases aliases.db
Állítsuk be a Mailman rendszeresen futtatandó részeit:
cd /home/mailman/cron crontab crontab.in -u mailman
Indítsuk újra az érintett szolgáltatásokat:
service httpd restart service postfix restart service mailman start
Ha a Mailman levelező részét szeretnénk elindítani bootkor:
service mailman add
Létre kell hoznunk egy rendszerszintű levelezőlistát:
cd /home/mailman bin/newlist mailman
Hozzunk létre egy saját listát is:
bin/newlist domain1-ertesites
A böngészőnkben nyissuk meg a következő oldalt:
https://foo.domain1.hu/mailman/admin/domain1-ertesites/?VARHELP=general/host_name
(az imént megadott jelszó kell hozzá), és állítsuk át a lista kimenő szervercímét foo.domain1.hu-ról domain1.hu-ra. Ezáltal a kimenő levelekben elrejtettük a (még virtuálisan sem létező) foo.domain1.hu domaint. Ahhoz, hogy ezekre a levelekre válaszolni is lehessen, létre kell hozni néhány aliast:
domain1-ertesites@domain1.hu -> domain1-ertesites@foo.domain1.hu domain1-ertesites-bounces@domain1.hu -> domain1-ertesites-bounces@foo.domain.hu domain1-ertesites-request@videsign.hu -> domain1-ertesites-request@foo.domain1.hu
Ezzel a módszerrel lehet több virtuális domainünkben is azonos című lista (azaz lehet pl. hirlevel@domain1.hu és hirlevel@domain2.hu címen elérhető levelezőlistánk is). Természetesen mindegyik listának egyedi neve kell legyen (ezért szerepel a fenti példában az ertesites előtt a domain1- kitétel is), ezt azonban további aliasokkal elrejthetjük. A hírleveles példánál maradva a következő aliasokra lesz tehát szükségünk:
domain1-hirlevel@domain1.hu -> domain1-hirlevel@foo.domain1.hu domain1-hirlevel-bounces@domain1.hu -> domain1-hirlevel-bounces@foo.domain1.hu domain1-hirlevel-request@videsign.hu -> domain1-hirlevel-request@foo.domain1.hu domain2-hirlevel@domain2.hu -> domain2-hirlevel@foo.domain1.hu domain2-hirlevel-bounces@domain2.hu -> domain2-hirlevel-bounces@foo.domain1.hu domain2-hirlevel-request@videsign.hu -> domain2-hirlevel-request@foo.domain1.hu hirlevel@domain1.hu -> domain1-hirlevel@foo.domain1.hu hirlevel@domain2.hu -> domain2-hirlevel@foo.domain1.hu
A lényeg az utolsó két sor, de figyeljünk oda rá, hogy a foo.domain1.hu mindig maradjon foo.domain1.hu. Az egész játéknak ugyanis az a trükkje, hogy ezen a (virtuálisan sem létező) foo.domain1.hu domainen megy át az összes levelezőlistánk összes levele, amit a Postfix transport táblája irányít a postfix-to-mailman.py szkript felé, ami végeredményben megfelelő módon továbbítja a listás leveleket a Mailman felé.
Felhasznált irodalom: Dan Langille leírása, GNU Mailman - Installation Manual.
Figyelem! A cikk írója semmiféle felelősséget nem vállal az itt leírtakkal kapcsolatban, különösen, de nem kizárólagosan levelek elveszítésével, rossz helyre történő kézbesítésével és hasonlókkal kapcsolatban. Ez a cikk a Creative Commons Nevezd meg!-Ne add el!-Így add tovább! 2.5 Magyarország Licenc feltételeinek megfelelően szabadon felhasználható. Bármi hiba esetén kéretik értesíteni a cikk szerzőjét.