Az Exim �s a Mailman egy�tt
===========================
[Ez a f�jl Nigel Metheringhamz "HOGYANIS - Az Exim �s a Mailman egy�tt"
dokument�ci�j�nak egy kivonata, amelyben a 2.0.x verzi�j� Mailman-r�l
�s a 3-as verzi�j� Exim-r�l lehet olvasni. A friss�tett dokument�ci�ban
a 2.1-es Mailman �s 4-es Exim �sszekapcsol�s�r�l is lehet olvasni. Az
eredeti dokument�ci�t az al�bbi c�men lehet olvasni:
http://www.exim.org/howto/mailman.html ]
Mailman be�ll�t�sa
------------------
A Mailman-t nem kell a hagyom�nyost�l elt�r� m�don be�ll�tani, mint ahogy
az a Mailman telep�t�si dokument�ci�j�ban le van �rva. Mind�ssze a
mailman uid/gid �rt�keit kell az Exim konfigur�ci�j�nak megfelel� helyein
megadni.
Exim be�ll�t�sa
---------------
Az Exim be�ll�t�s�val a Mailman-ben l�trehozott list�k automatikusan,
tov�bbi bejegyz�sek n�lk�l megjelennek �s haszn�lhat�ak lesznek.
Ennek a be�ll�t�snak a h�tr�nya az, hogy gyenge teljes�tm�nnyel m�k�dik
olyan rendszereken, amelyek t�bb k�l�nb�z� levelez� tartom�ny list�it
szolg�lj�k ki. Igaz, hogy a Mailman k�pes kezelni virtu�lis tartom�nyok
kezel�s�re, de egyel�re nem k�pes kezelni ugyanaz a telep�tett Mailman
azonos n�vvel, de elt�r� tartom�nyban tal�lhat� list�kat. Ez a j�v�ben
v�ltozni fog. (Lejjebb k�l�nb�z� v�ltozatokr�l lehet olvasni, amelyekkel
a virtu�lis tartom�nyokat lehet megfelel�en kiszolg�lni.)
A k�s�bb bemutatott konfigur�ci�s �llom�ny r�szleteket azon m�r m�k�d� Exim
konfigur�ci�s r�szbe kell elhelyezni, amely azon tartom�ny levelez�s��rt
felel�s, ahol a lista m�k�dik. Ha ez a tartom�ny elt�r az Eximben megadott
tartom�nyokt�l, akkor a k�vetkez�ket kell tenni:
* adjuk hozz� a local_domains-hez a lista tartom�ny�t,
pl. sajat.listam.domain
* adjuk a "domains=sajat.listam.domain" be�ll�t�st a lista �tir�ny�t�
(director) r�sz�hez
* (ha sz�ks�ges) a t�bbi �tir�ny�t�n�l vegy�k fel ezt a tartom�nyt a
figyelmen k�v�l hagyand� tartom�nyok k�z�.
[Megjegyz�s: a le�r�sban tal�lhat� be�ll�t�sok mind 3-as, mind 4-es Eximhez
egyar�nt haszn�lhat�ak. 3-as Eximn�l 'local_domains' be�ll�t�sra van
sz�ks�g�nk, m�g a 4-es verzi�ban t�bbnyire a 'local_domains'-ben megadott
tartom�nylist�ra. Ha nem �gy haszn�ljuk az Eximet, akkor val�sz�n�leg
alapos Exim be�ll�t�si ismeretekkel rendelkez�nk, �gy nem lesz neh�z
m�dos�tani a k�s�bb ismertetett be�ll�t�sokat. 4-es Eximben az �tir�ny�t�k
(directors) r�sz megsz�nt, szerep�t a routers r�sz vette �t, �gy ha 4-es
Eximet haszn�lunk, akkor mindenhol ahol a dokument�ci� �tir�ny�t�t eml�t
mi routert �rts�nk.]
F�ggetlen�l att�l, hogy melyik Exim verzi�t haszn�ljuk az Exim konfigur�ci�s
�llom�ny�nak �ltal�nos be�ll�t�sok r�sz�be n�h�ny v�ltoz�z kell megadnunk.
Tov�bb� egy �j tov�bb�t� r�szt is l�tre kell majd hoznunk. 3-as Eximn�l
egy �j �tir�ny�t�, m�g a 4-es verzi�ban egy �j router t�lti be majd
ugyanazt a szerepet.
V�g�l pedig �rdemes tudni, hogy ezekkel a be�ll�t�sokkal ugyanazon a
g�pen egym�s mellett m�k�dhet a Mailman 2.0-�s �s 2.1-es verzi�ja is.
Ekkor "mailman" helyett hivatkozhatunk "mm21" n�vvel a m�sik, �jabb
verzi�ra, pl. MM21_HOME, mm21_transport, stb.
�ltal�nos be�ll�t�sok
~~~~~~~~~~~~~~~~~~~~~
El�sz�r is ez Exim konfigur�ci�s �llom�ny�nak elej�hez adjuk a k�vetkez�
v�ltoz�kat. A v�ltoz�k seg�ts�g�vel egyszer�bben kezelhet�ek a k�s�bb
megadott �tir�ny�t� �s router be�ll�t�sok. Term�szetesen a saj�t
rendszer�nk szerint m�dos�tsuk a megadott �rt�keket.
# A telep�tett Mailman 'home' k�nyvt�ra
MAILMAN_HOME=/usr/local/mailman
MAILMAN_WRAP=MAILMAN_HOME/mail/mailman
# Mailman felhaszn�l� �s csoport azonos�t�ja, egyeznie kell a Mailman
# bell�t�sakor haszn�lt --with-mail-gid kapcsol�n�l megadott �rt�kkel
MAILMAN_UID=mailman
MAILMAN_GID=mailman
Transport r�sz Exim 3-hoz
~~~~~~~~~~~~~~~~~~~~~~~~~
Az Exim konfigur�ci�s �llom�ny�nak transports fejezet�hez adjuk a k�vetkez�
sorokat, kb. az els� �s m�sodik "end" tartalm� sor k�z� kell besz�rni a
k�vetkez�ket:
mailman_transport:
driver = pipe
command = MAILMAN_WRAP \
'${if def:local_part_suffix \
{${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}} \
{post}}' \
$local_part
current_directory = MAILMAN_HOME
home_directory = MAILMAN_HOME
user = MAILMAN_USER
group = MAILMAN_GROUP
(Exim 3 alatt nem lett tesztelve ez az tov�bb�t� be�ll�t�s. Ez�rt a
dokument�ci� k�sz�t�je sz�vesen v�rja azok jelentkez�s�t, �szrev�tel�t akik
3-as verzi�j� Eximmel haszn�lja ezt a be�ll�t�st.)
�tir�ny�t� r�sz Exim 3-hoz
~~~~~~~~~~~~~~~~~~~~~~~~~~
Ha 3-as Eximet haszn�lunk, akkor a konfigur�ci�s �llom�ny �tir�ny�t�
r�sz�hez a k�vetkez�ket kell adni (az �tir�ny�t�k a m�sodik �s harmadik
"end" tartalm� sor k�z�tt tal�lhat�ak). Fontos, hogy itt sz�m�t a sorrend
-- pl. ha ezt az ir�ny�t�t az alias�llom�ny �tir�ny�t�j�ra val� hivatkoz�s
el� tessz�k, akkor a Mailman bejegyz�sei (aliases) a rendszer bejegyz�sekn�l
magasabb �rv�ny�ek lesznek.
# A list�hoz tartoz� �sszes c�met kezeli ez a r�sz.
# Automatikusan azonos�tja a list�kat a MAILMAN_HOME k�nyvt�rban
# tal�lhat� lists/$local_part/config.pck �llom�nyok alapj�n.
mailman_director:
driver = smartuser
require_files = MAILMAN_HOME/lists/$local_part/config.pck
suffix_optional
suffix = -bounces : -bounces+* : \
-confirm+* : -join : -leave : \
-owner : -request : -admin
transport = mailman_transport
Router r�sz Exim 4-hez
~~~~~~~~~~~~~~~~~~~~~~
4-es Eximben az �tir�ny�t�k helyett routereket kell haszn�lni. Ezen t�l a
konfigur�ci�s �llom�ny fel�p�t�se is megv�ltozott -- ABC sorrendet haszn�l,
�gy itt a router r�sz a transport r�sz el� ker�l. Tegy�k a router be�ll�t�st
a router r�szbe, amely a "begin routers" sor ut�n kezd�dik. El ne felejts�k,
hogy a megadott sorrend itt m�g ink�bb sz�m�t.
mailman_router:
driver = accept
require_files = MAILMAN_HOME/lists/$local_part/config.pck
local_part_suffix_optional
local_part_suffix = -bounces : -bounces+* : \
-confirm+* : -join : -leave : \
-owner : -request : -admin
transport = mailman_transport
Transport r�sz Exim 4-hez
~~~~~~~~~~~~~~~~~~~~~~~~~
A 4-es Eximhez haszn�lhatjuk a 3-as Eximben megadott transport bejegyz�st,
nyugodtan m�soljuk be valahova a "begin transports" sor ut�n a 3-as Eximn�l
ismertetett be�ll�t�sokat.
Megjegyz�s
~~~~~~~~~~
Az Exim-et �gy kell be�ll�tani, hogy a k�zbes�t�s elfogadhat� m�rt�k�
legyen - pl. a max_recipients ne valami nagyon kis �rt�k legyen, �s a
biztons�gi be�ll�t�sok is �rtelmes szintet eredm�nyezzenek - pl. 127.0.0.1
c�mr�l (evidensen) enged�lyezett a relaying, de m�shonnan nagyon nem.
P�rhuzamos k�ld�si m�dot is be lehet �ll�tani. A k�zbes�t�sek id�-
t�ll�p�s�re figyelmeztet� �zeneteket legal�bb a list�khoz kapcsol�d�
c�mekn�l kapcsoljuk ki, ha nem szeretn�nk nagyon sok ilyen �zenetet
kapni, amikor a c�mzett g�p nem �rhet� el.
Probl�m�k
~~~~~~~~~
* A Mailman annyi MAIL FROM/RCPT TO h�v�st haszn�l, amennyi sz�ks�ges.
Ennek k�vetkezt�ben 10 vagy 100 �zenetn�l is t�bbet pr�b�l meg egy
kapcsolat alatt elk�ldeni, amely t�bb mint az Exim alapesetben
be�ll�tott enged�lyezett k�ld�se (smtp_accept_queue_per_connection).
Emiatt az Exim v�rakoz�lista m�dba kapcsol �s nagy k�s�sekkel
fogja az �zeneteket tov�bb�tani.
A probl�ma elker�l�s�re adjunk az SMTP_MAX_SESSIONS_PER_CONNECTION
v�ltoz�nak (a ~mailman/Mailman/mm_cfg.py �llom�nyban) az Exim
smtp_accept_queue_per_connection �rt�k�n�l kisebb �rt�ket
* A Mailman-nak figyelmen k�v�l kellene hagynia az Exim k�zbes�t�s
id�t�ll�p�s�b�l (delay) ered� �zeneteit, annak ellen�re, hogy az
Exim ezeket sohasem k�ldi el a list�kra. A Mailman 2.1-ben a
visszapattan�sok kezel�se �s a VERP t�mogat�sa nagyban seg�theti
a visszapattan�sok nyomonk�vet�s�t.
* A list�k l�tez�s�n�l ellen�rzi a be�ll�t�s, hogy tal�lhat�-e a
list�hoz config.pck f�jl. Ha t�r�lj�k a list�t, akkor �gyelj�nk
hogy t�r�lj�k a list�hoz tartoz� config.pck f�jlt is.
* Ha hib�s felhaszn�l�i azonos�t�ra hivatkozva nem t�rt�nik k�zbes�t�s,
akkor ellen�rizz�k, hogy a MAILMAN_UID �s MAILMAN_GID v�lt�z�knak
helyesen adtuk-e meg a Mailman ezen �rt�keit. Figyelj�nk arra
is, hogy a rendszerszint� aliases f�jlban nem tal�lhat� a list�hoz
k�zvetlen�l kapcsol�d� bejegyz�s.
C�mzett azonos�t�sa
~~~~~~~~~~~~~~~~~~~
Az Exim c�mzett azonos�t�s funkci�ja nagyon hasznos, mivel seg�ts�g�vel
az SMTP kapcsolat ideje alatt el lehet vetni a nem ismert c�mzett�
leveleket. Ez a funkci� a saj�t tartom�nyukba k�ls� c�mekr�l �rkez�
levelek eset�n hasznos. A Mailman list�k forgalm�n�l a levelek a saj�t
szerver�nkr�l indulnak �s k�l�nb�z� k�ls�, t�l�nk f�ggetlen tartom�nyokba
ker�lnek elk�ld�sre. Minden egyes lev�l t�bb c�mzettnek ker�lhet tov�bb�t�sra
-- ak�r egyszerre 500-nak is, ha a Mailman alap�rtelmezett �rt�k�t haszn�ljuk
�s nem m�dos�tottuk az SMTP_MAX_RCPTS �rt�k�t.
A Mailman list�k forgalm�n c�mzett azonos�t�st v�gezve probl�m�k
mer�lhetnek fel. �ltal�ban az Exim a Mailman list�kr�l �rkez� �zenetek
minden c�mzettj�t megpr�b�lja el�rni. Ehhez mind�ssze p�r keres�st
v�gez a DNSben minden egyes c�mzettn�l, azonban ez a keres�s a k�zbes�t�st
nagyon lelass�thatja. Ez�rt c�lszer� kikapcsolni a c�mzett azonos�t�st
a Mailman forgalomra.
3-as Exim alatt a k�vetkez�t kell elhelyezni az �ltal�nos be�ll�t�sok
r�szben:
receiver_verify_hosts = !127.0.0.1
4-es Eximn�l val�sz�n�leg az alap�rtelmezett c�mzett azonos�t�si ACL
kifejez�sben (az "RCPT TO" ACL-ben) m�r enged�lyezve van ez a funkci�:
accept domains = +local_domains
endpass
message = unknown user
verify = recipient
Ekkor csak a saj�t tartom�nyba �rkez� levelekre v�gez c�mzett azonos�t�st
az Exim. (Ez a megold�s nem teljesen azonos azokn�l az �zenetekn�l
alkalmazott c�mzett azonos�t�si funkci�val, amelyek nem-127.0.0.1 hostokr�l
�rkeznek, de m�k�dik a Mailman eset�ben.)
SMTP Callback
~~~~~~~~~~~~~
Az Exim SMTP callback k�pess�g�vel m�g hat�konyabban lehet azonos�tani
a hib�s felad�c�meket, mint a hagyom�nyos felad� ellen�rz�ssel. Sajnos
nagyon sok szerver a visszapattan�si �zenet fejl�c�ben hib�s felad�t
t�ntet fel (annak ellen�re, hogy csak egy �res felad� c�met k�ne
haszn�lniuk ilyen esetekben).
Az�rt, hogy a Mailman a visszapattan� c�meket kezelni tudja sz�ks�ges
a Mailman list�kon fogadni az ilyen leveleket, m�g akkor is ha ezek
nem alkalmasak visszapattan�sok azonos�t�s�ra. Ez�rt t�bbnyire
c�lszer� kikapcsolni az SMTP callback ellen�rz�st a visszapattan�
levelekre.
Exim 4 eset�n ezt a k�vetkez� be�ll�t�ssal lehet el�rni az "RCPT TO" ACL
r�szben:
# Fogadjuk a visszapattan�sokat a list�n m�g akkor is ha a callback vagy
# m�s ellen�rz�sek nem j�rtak sikerrel
warn message = X-WhitelistedRCPT-nohdrfromcallback: Yes
condition = \
${if and {{match{$local_part}{(.*)-bounces\+.*}}
{exists {MAILMAN_HOME/lists/$1/config.pck}}} \
{yes}{no}}
{yes}{no}}
accept condition = \
${if and {{match{$local_part}{(.*)-bounces\+.*}}
{exists {MAILMAN_HOME/lists/$1/config.pck}}} \
{yes}{no}}
{yes}{no}}
# Most ellen�rizhetj�k a felad� c�m�t az SMTP callback funkci�val.
deny !verify = sender/callout=90s
Ha a fejl�cben tal�lhat� c�mekre is szeretn�nk SMTP callback ellen�rz�st
v�grehajtani, akkor a "DATA" ACL-t a k�vetkez�k�ppen kell megadni:
deny !condition = $header_X-WhitelistedRCPT-nohdrfromcallback:
!verify = header_sender/callout=90s
[Fontos, hogy a le�rtakat nem tesztelt�k m�g teljesen a dokument�ci�
k�sz�t�i!]
VERP haszn�lata Eximmel �s Mailmannel
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
VERP eset�n a listatagoknak a leveleket k�l�n-k�l�n k�ldj�k el, a VERP
be�ll�t�s�r�l a ~mailman/Mailman/Defaults.py �llom�nyban lehet b�vebben
olvasni. R�viden, a k�vetkez�ket kell felt�ntetni a ~mailman/Mailman/mm_cfg.py
�llom�nyban a VERP haszn�lat�hoz:
VERP_PASSWORD_REMINDERS = 1
VERP_PERSONALIZED_DELIVERIES = 1
VERP_DELIVERY_INTERVAL = 1
VERP_CONFIRMATIONS = 1
(A fenn eml�tett �tir�ny�tok k�pesek a VERP visszapattan�sok kezel�s�re is.)
Virtu�lis tartom�nyok
~~~~~~~~~~~~~~~~~~~~~
Virtu�lis tartom�nyok kezel�s�re megold�s lehet az a m�dszer, hogy minden
egyes virtu�lis tartom�nyhoz k�l�n-k�l�n telep�tett Mailmant haszn�lunk.
(Jelenleg csak ezzel a m�dszerrel lehet ugyanazon a rendszeren azonos n�vvel,
de elt�r� tartom�nyokban list�kat �zemeltetni.)
Ez esetben ne adjuk meg a MAILMAN_HOME �s MAILMAN_WRAP v�ltoz�kat, t�r�lj�k
azokat az �ltal�nos be�ll�t�sok r�szb�l. M�dos�tsuk a director (router)
r�szeket valahogy �gy:
require_files = /virtual/${domain}/mailman/lists/${lc:$local_part}/config.pck
a transports r�szeket pedig �gy:
command = /virtual/${domain}/mailman/mail/mailman \
${if def:local_part_suffix \
{${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}}
{post}} \
$local_part
current_directory = /virtual/${domain}/mailman
home_directory = /virtual/${domain}/mailman
Lista ellen�rz�se
~~~~~~~~~~~~~~~~~
A k�vetkez�kben bemutatjuk, hogy hogyan lehet ellen�rizni egy m�k�d�
rendszeren, hogy az Eximnek megadott list�k c�mei megfelel�en m�k�dnek.
A p�ld�ban az mems-exchange.org levelez�szerveren m�k�d�
quixote-users@mems-exchange.org list�n mutatjuk be a sz�ks�ges parancsokat
("% " jelzi a Unix shell promptj�t):
% exim -bt quixote-users
quixote-users@mems-exchange.org
router = mailman_main_router, transport = mailman_transport
% exim -bt quixote-users-request
quixote-users-request@mems-exchange.org
router = mailman_router, transport = mailman_transport
% exim -bt quixote-users-bounces
quixote-users-bounces@mems-exchange.org
router = mailman_router, transport = mailman_transport
% exim -bt quixote-users-bounces+luser=example.com
quixote-users-bounces+luser=example.com@mems-exchange.org
router = mailman_router, transport = mailman_transport
Ha az "exim -bt" parancsok kimenete hasonl�t valamennyire a fentiekhez,
akkor az j� jel, mert azt jelenti hogy az Exim a megfelel� Mailman
bejegyz�shez tov�bb�tja az elt�r� �zeneteket. Azonban messze nem jelenti
azt, hogy az Exim �s Mailman telep�t�s biztosan t�k�letesen m�k�dik!
A dokumentum k�sz�t�i
~~~~~~~~~~~~~~~~~~~~~
Eredeti szerz�je Nigel Metheringham <postmaster@exim.org>.
Mailman 2.1-es �s Exim 4-es verzi�hoz adapt�lta Merlin <marc_soft@merlins.org>.
Ellen�r�zte/form�ba �nt�tte/pontos�totta/egyszer�s�tette Greg Ward <gward@python.net>.