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 �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 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>.