Majordomo en MajorCool HOWTO <author>John Archie, <tt/johnarchie@emeraldis.com/ <newline> Vertaler: <htmlurl url="http://people.zeelandnet.nl/reggye" name=" Reggy Ekkebus">, <htmlurl url="mailto:reggy@zeelandnet.nl" name="reggy@zeelandnet.nl"> <date>v1.0, 10 November 1999 <abstract> De document is bedoeld om een gebruiker te gidsen door een installatie van de Majordomo Mailing List Software en MajorCool. MajorCool is een applicatie voor het onderhouden van Majordomo lijsten via een CGI script; veel mensen die vreemd zijn met de text gebaseerde natuur van Majordomo geven de voorkeur aan het meer vriendelijke web-interface van MajorCool. </abstract> <toc> <sect>Introductie <p> Deze HOWTO is verdeeld in verschillende secties. Het Sendmail deel van deze HOWTO is een algemene discussie over Majordomo en hoe het werkt met Sendmail en ook de verschillende manieren om Majordomo op te zetten en de consequenties van zulke besluiten. In tegenstelling tot de rest van de HOWTO die is op gezet als een tutorial om een gebruiker te gidsen door het algemene installatie proces van Majordomo. Ik raad aan om door te gaan naar het algemene installatie proces dat is beschreven achter de Sendmail sectie, je kan altijd nog een deel van de Sendmail sectie nalezen als dat nodig is (de bedoelde secties worden op de plaatsen verwezen). Dan, lees de Sendmail sectie nauwkeurig en beslis dan hoe je je systeem exact moet configureren. Tot slot, een lijst met Termen geeft de definities van sommige moeilijke termen. <p> Ook, als je enkele van de software in dit document download, als de officiële sites down zijn kun je de tarballs van mijn site downloaden--<tt>http://philosophy.lander.edu/~jarchie/majordomo/</tt>. <sect1>Credits <p> Dank gaat naar (in alfabetische volgorde) een paar mensen die me erg hebben geholpen. <itemize> <item>Lee Archie voor het proef-lezen <item>James Bruce en Bill Poston voor de gelegenheid om mijn eerste permanente machine te maken die Majordomo draait. <item>Joseph D. Sloan voor het lezen van het Sendmail deel en door de goede suggesties. </itemize> <sect1>Opmerkingen <p> Ik heb steeds geprobeerd deze HOWTO zo compleet mogelijk te maken, het is altijd goed om naar meer dan een bron te kijken. Hieronder is een lijst van bronnen die ik hulp vol vond toen ik Majordomo voor het eerst configureerde. <p> Boeken: <enum> <item>Bryan Costales en Eric Allman, <em/sendmail/. Cambridge: O'Reilly, 1997. <item>Alan Schwartz, <em/Managing Mailing Lists/. Cambridge: O'Reilly, 1998. </enum> Gratis bronnen: <enum> <item>de documentatie die bij Sendmail zit, vooral <tt/README.cf/ <item>de documentatie die bij Majordomo zit, vooral <tt/INSTALL/ en <tt/NEWLIST/ <item>het <tt/Majordomo-Users/ Mailing List Archief (<tt>http://www.hpc.uh.edu/majordomo-users/</>) <item>de documentatie bij MajorCool </enum> <sect>Sendmail <p> Sinds Majordomo verantwoordelijk is voor het bijhouden van Email lijsten steunt Majordomo op een zware MTA zoals Sendmail. Er zijn andere MTA's zoals Smail en Qmail; hoe dan ook, Sendmail is de oudste en meest algemene. Deze sectie introduceert de lezer aan de gebieden van Sendmail die bruikbaar of nodig zijn om te configureren als je Majordomo gebruikt. <sect1>Aliases<label id="sec-aliases"> <p> De Sendmail aliases file (gewoonlijk <tt>/etc/aliases</>) wordt gebruikt voor het maken van verwijzingen voor E-mail adressen. Bijvoorbeeld, wanneer Majordomo is geinstalleerd, komt er meest een regel als deze: <tscreen><verb> majordomo-owner: jarchie </verb></tscreen> Deze invoer betekend dat alle mail geadresseerd aan <tt/majordomo-owner@host.com/ eigenlijk naar <tt/jarchie@host.com/ wordt gezonden. Onthoud het is niet nodig om <tt/@host.com/ achter <tt/jarchie/ te zetten omdat beide gebruikers op de zelfde computer zitten. Als het moet worden door gestuurd naar een andere gebruiker op een andere computer dan moet je wel <tt/@host.com/ erachter zetten. <p> Een ander type van invoer in de aliases file geeft je de mogelijkheid om E-mail door te sturen naar meerdere personen aangegeven in een file: <tscreen><verb> testlist: :include:/usr/local/majordomo-1.94.4/lists/testlist </verb></tscreen> Deze invoer zegt dat alle berichten gezonden naar <tt/testlist@host.com/ worden doorgestuurd naar alle adressen in de file <tt>/usr/local/majordomo-1.94.4/lists/testlist</>. De <tt/testlist/ file ziet er ongeveer zo uit: <tscreen><verb> johnarchie@emeraldis.com srobirds@yahoo.com acreswell@geocities.com </verb></tscreen> Majordomo kan hierdoor adressen toevoegen en verwijderen van een lijst door het voordeel van dit kenmerk. Als er een <tt/subscribe/ aanvraag wordt verwerkt wordt het E-mail adres van de gebruiker toegevoegd aan de <tt/testlist/ file; Als er een <tt/unsubscribe/ aanvraag wordt verwerkt wordt het E-mail adres van de gebruiker verwijderd uit de <tt/testlist/ file; Een kan ook simpel adressen toevoegen en verwijderen door simpel de file te editten met bijvoorbeeld <bf/vi/. <p> Sinds Majordomo commando's moet verwerken die met E-mail zijn gezonden, moet Sendmail het Majordomo programma kunnen starten en bericht kunnen doorgeven. Dit wordt gedaan door nog een ander type toe te-voegen aan de <tt/aliases/ file: <tscreen><verb> majordomo: "|/usr/local/majordomo-1.94.4/wrapper majordomo" </verb></tscreen> Het programma <tt>/usr/local/majordomo-1.94.4/wrapper</> is een wrapper (SUID majordomo en SGID majordomo of deamon afhankelijk van de configuratie) die het Majordomo programma uitvoert. De aanhalingstekens rond het tweede deel van de alias invoer vertelt sendmail dat het allemaal een deel is; De aanhalingstekens zouden niet nodig zijn als er geen spatie tussen <tt/wrapper/ en <tt/majordomo/ had gestaan. De <tt>|</> is bekend als een "pipe"; het wordt gebruikt om Sendmail te vertellen dat hij de e-mail via de standaard input moet zenden. (Sinds het enige wat de wrapper doet is <tt/majordomo/ aanroepen, de E-mail wordt eigenlijk gezonden door Majordomo.) De wrapper accepteert een parameter--het programma dat hij moet uitvoeren. (Elk parameter achter de eerst wordt gezonden naar het programma dat hij uitvoert.) Voor veiligheid redenen, voert de wrapper alleen programma's in de Majordomo directorie uit, <tt>/usr/local/majordomo-1.94.4/</>. Deze beperking weerhoud een programmeur om de wrapper een programma te laten draaien dat niet Majordomo rechten moet hebben. (Bijvoorbeeld, <bf>wrapper /bin/vi</> zou de gebruiker in staat stellen om elke Majordomo configuratie file aan te passen.) Als een bericht wordt gezonden naar <tt/majordomo@host.com/, start Sendmail de wrapper op die op zijn beurt <tt/majordomo/ start, en Sendmail geeft het bericht via de standaard invoer door aan het <tt/majordomo/ script. Majordomo haalt dan gelijk het commando uit het bericht en antwoordt passend. <sect1><tt/Sendmail.cf/ aanpassen <p> Door zijn geheimzinnige zinsbouw is <tt/sendmail.cf/ de meest gevreesde van alle configuratie files. In de installatie van <tt/majordomo/, is het niet echt nodig om <tt/sendmail.cf/ aan te passen; echter, een paar eigenschappen zijn extreem bruikbaar. Tenzij er grote veranderingen moeten worden gemaakt aan de <tt/sendmail.cf/ (die, gelukkig, voor Majordomo niet nodig zijn), de file aanpassen is niet zo moeilijk. Het enige dat we moeten doen is een paar extra regels toevoegen. <sect2>Een andere Aliases File <p> Een aparte file voor de Majordomo aliases aanmaken, zoals <tt>/usr/local/majordomo-1.94.4/majordomo.aliases</>, is vaak een goed idee. Dit kan gemakkelijk gedaan worden door een regel aan het eind van de <tt/sendmail.cf/ file te plaatsen: <tscreen><verb> OA/usr/local/majordomo-1.94.4/majordomo.aliases </verb></tscreen> Om een <tt>/usr/local/majordomo-1.94.4/majordomo.aliases</> te hebben moet Sendmail een database kunnen genereren (<tt>/usr/local/majordomo-1.94.4/majordomo.aliases.db</>). De makkelijkste manier om dit voor elkaar te krijgen is door gewoon een lege database aan te maken en die voor Sendmail overschrijf baar maken. <tscreen><code> [root@kes majordomo-1.94.4]# touch majordomo.aliases.db [root@kes majordomo-1.94.4]# chmod 644 majordomo.aliases.db </code></tscreen> Een andere methode om rond dit probleem te komen is door een <tt/majordomo.aliases/ file in de <tt>/etc/</> directory te zetten i.p.v in de Majordomo home directory. <sect2>Ongewenste Sendmail Security Eigenschappen <p> Voor vele set ups, kunnen sommige security middelen die Sendmail gebruikt Majordomo tegen houden om goed te werken. Vanzelfsprekend, moet deze security eigenschappen uitgezet worden. <sect2>Sendmail Vertrouwde Gebruikers<label id="sec-sendtrust"> <p> Sendmail is een programma om het moeilijk te maken voor mensen om de "perfecte" vervalsing van E-mail te maken. Bijvoorbeeld, wanneer een gebruiker een bericht zend via SMTP, wordt het bron IP adres meestal gelogd, en als een gebruiker een bericht zend direct via Sendmail en de zender instelt via <bf/sendmail -f/, geeft sendmail een waarschuwing met de gebruiker wie het bericht echt heeft gezonden. Hoewel, sommige programma's een bericht moet zenden met vermomt als een andere gebruiker, en deze extra security regel in de header is vervelend. Sendmail behandeld dit probleem door het hebben van vertrouwde gebruikers. Majordomo moet draaien als een Sendmail vertrouwde gebruiker sinds het programma mail moet zenden als een andere gebruiker. Deze eigenschap kan ingesteld worden op twee manieren. De makkelijkste is gewoon door Majordomo aan de <tt/daemon/ groep toe te voegen. Om de <tt/majordomo/ gebruiker toe te voegen aan de deamon groep moet je een regel aanpassen in de <tt>/etc/group</> file er verschijnt iets als dit. <tscreen><verb> daemon::2:root,bin,daemon </verb></tscreen> en het wordt <tscreen><verb> daemon::2:root,bin,daemon,majordomo </verb></tscreen> Een andere manier om Majordomo een vertrouwde gebruiker te maken is door de regel <tscreen><verb> Tmajordomo </verb></tscreen> toe te voegen aan de <tt/sendmail.cf/ file. <sect2>Sendmail Beperkte Shell <p> Als Sendmail <tt/smrsh/ gebruikt, zijn de enige programma's die mogen worden uitgevoerd programma's in de <tt>/etc/smrsh/</> directory. Misschien is de beste manier om de wrapper uit de <tt/aliases/ file te laten draaien door een symbolische link te creëren van <tt>/usr/local/majordomo-1.94.4/wrapper</> naar <tt>/etc/smrsh/wrapper</>. <tscreen><code> [root@kes smrsh]# ln -s /usr/local/majordomo-1.94.4/wrapper wrapper </code></tscreen> Een tweede oplossing is door de wrapper naar de <tt>/etc/smrsh</> directory te kopieëren. <tscreen><code> [root@kes smrsh]# mv /usr/local/majordomo/wrapper ./ </code></tscreen> Als veiligheid niet echt belangrijk is kun je de secure shell uitzetten. Een ruwe manier is gewoon door <tt>/usr/sbin/smrsh</> te verwijderen en een kopie of een link van <tt>/bin/sh</> er terug zetten. <tscreen><code> [root@kes sbin]# rm -f smrsh [root@kes sbin]# ln -s /bin/sh smrsh </code></tscreen> Een beter (maar moeilijkere manier) is door <tt/sendmail.cf/ aan te passen. verander de aanmerking van <tt>/usr/sbin/smrsh</> <tscreen><verb> Mprog, P=/usr/sbin/smrsh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/, T=X-Unix, A=sh -c $u </verb></tscreen> naar <tt>/bin/sh</> <tscreen><verb> Mprog, P=/bin/sh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/, T=X-Unix, A=sh -c $u </verb></tscreen> <sect2>Groep schrijf Rechten <p> Als je plant om een niet-root gebruiker mailing list laat toevoegen en beheren, moet je een <tt/majordomo.aliases/ file hebben die groep schrijf baar is. Hoewel, Sendmail dit niet toestaat voor veiligheids redenen ( zie sectie over <ref id="sendmail-security" name="Sendmail Security Eigenschappen">). Om deze security eigenschap uit te schakelen, moet je de regel. <tscreen><verb> O DontBlameSendmail=GroupWritableAliasFile </verb></tscreen> toevoegen aan de <tt/sendmail.cf/ file. Ook, de lijst directory moet groep schrijf baar zijn om een lijst te kunnen toevoegen, maar sendmail staat deze setup om enkele redenen niet toe. Om dit uit te schakelen voeg dan de volgende regel toe <tscreen><verb> O DontBlameSendmail=IncludeFileInGroupWritableDirPath </verb></tscreen> aan je <tt/sendmail.cf/ configuratie file als dat nodig is. <p> <sect1><tt/sendmail.cf/ configureren met M4 Configuratie <p> Voor administrators die niet de <tt/sendmail.cf/ file direct willen aanpassen, is het mogelijk om M4 te gebruiken om de file te creëren; de sectie beschrijft hoe je de veranderingen moet doen met een <tt/mc/ file i.p.v in de <tt/cf/ file. <p> De bedoeling van een M4 configuratie is om een makkelijke manier aan te bieden om de <tt/sendmail.cf/ file aan te passen. Het is idee is dat de gecreeërde <tt/mc/ file makkelijker te snappen is dan de <tt/sendmail.cf/ file. Door het draaien van de m4 processor, wordt een <tt/sendmail.cf/ file gegenereerd: <tscreen><code> [root@kes etc]# m4 /etc/sendmail.mc > /etc/sendmail.cf </code></tscreen> <sect2>Een andere Aliases File aanmaken <p> Voeg de regel <tscreen><verb> define(`ALIAS_FILE',`/etc/aliases,/usr/local/majordomo/majordomo.aliases') </verb></tscreen> toe aan de <tt/sendmail.mc/ file. <sect2>Majordomo een vertrouwde gebruiker maken <p> Voeg de regel <tscreen><verb> define(`confTRUSTED_USERS',`majordomo') </verb></tscreen> toe aan de <tt/sendmail.mc/ file. <sect2>Sendmail Secure Shell uitschakelen <p> Verwijder de regel <tscreen><verb> FEATURE(smrsh) </verb></tscreen> in uit <tt/sendmail.mc/ file. <sect2>Security eigenschappen uitschakelen <p> Om de groep schrijf recht security check op de aliases file uit te schakelen voeg de regel <tscreen><verb> define(`confDONT_BLAME_SENDMAIL',`GroupWritableAliasFile') </verb></tscreen> toe aan de <tt/sendmail.mc/ file. <p> Om de path schrijf recht security check voor de include files uit te schakelen, voeg de regel <tscreen><verb> define(`confDONT_BLAME_SENDMAIL',`IncludeFileInGroupWritableDirPath') </verb></tscreen> toe aan de <tt/sendmail.mc/ file. Om beide opties te gebruiken, gebruik dan <tscreen><verb> define(`confDONT_BLAME_SENDMAIL',`GroupWritableAliasFile,IncludeFileInGroupWritableDirPath') </verb></tscreen> De laatste regel toevoegen is gelijk aan schrijven <tscreen><verb> O DontBlameSendmail=GroupWritableAliasFile,IncludeFileInGroupWritableDirPath </verb></tscreen> in de <tt/sendmail.cf/, en deze entry is het zelfde als beide op een aparte regel staan: <tscreen><verb> O DontBlameSendmail=GroupWritableAliasFile O DontBlameSendmail=IncludeFileInGroupWritableDirPath </verb></tscreen> <sect1>Sendmail Security bezorgd heden<label id="sendmail-security"> <p> Security is verhoudings gewijs het tegenover gestelde van gemak; de enige veilige machine is een die geen toegang bied voor wie dan ook. Door het uitschakelen van enkele sendmail security eigenschappen wordt een machine onvoorkombaar minder veilig. Hoewel, het is belangrijk om de basis security risico's te snappen om zo vast te stellen of het gemak het waard is om je computer minder veilig te maken. <sect2>Gevolgen van Onveilig Groep Schrijven <p> Als een gebruiker schrijf rechten heeft om toegang te krijgen tot een aliases file, <em/moet ze een vertrouwde gebruiker zijn/. Door het steken van een invoegsel in de aliases file ( zoals die gebruikt wordt om <bf/wrapper/ uit te-voeren) kan een gebruiker programma's uitvoeren met de rechten van Sendmail (<tt/daemon/ of, in oude versies, <tt/root/). De grote blunder van dit zou zijn dat je mensen in staat stelt om permissies te veranderen of zelfs te verwijderen van files die toebehoren aan <tt/daemon/ (door gebruik van <bf/rm/ of <bf/chmod/ commands in de aliases file). Dit is misschien vermeden door het gebruik van <bf/smrsh/; hoewel, er moet nog steeds voorzichtigheid zijn met welke files er in de <tt>/etc/smrsh/</> directory staan. <p> Een ander onderwerp dat boven water komt is dat de gebruiker die toegang hebben tot de aliases file kunnen veranderen in files die toebehoren aan <tt/daemon/ door het gebruik van file verwijzing (a <tt/>>/ or <tt/>/ i.p.v <tt/|/). En zo kan deze inbreuk ook worden opgelost door het toevoegen van een regel aan de <tt/sendmail.cf/ die limiteerd welke files kunnen worden geschreven door de aliases file. Voeg de regel <tscreen><verb> O SaveFileEnvironment=/path/to/safe/files </verb></tscreen> toe aan de <tt/sendmail.cf/ of voeg <tscreen><verb> define(`confSAFE_FILE_ENV',`/path/to/safe/files') </verb></tscreen> toe aan de <tt/sendmail.mc/ file. Hoewel, dit alleen een kleine laag van security tussen gebruiker en deamon achterlaat. Een veel beter idee zou zijn dat je een aliases file had die alleen schrijf baar is voor root en om een SUID root programma te maken dat automatisch toevoegt en verwijderd aan de Majordomo gerelateerde aliases. <p> In het geval van include of .forward files, worden commando gedraaid als de gebruiker van wie ze zijn. Daarom, als een file groep schrijf baar is, kan een lid van de groep commando's uitvoeren als de gebruiker van wie de file is. Met andere woorden, elke gebruiker in de <tt/majordomo/ groep kan commando's uitvoeren als Majordomo. Hoewel als de <tt/majordomo/ gebruiker is aangemaakt zonder een shell, commando's of verwijzingen worden niet verwerkt in include files toe behorend tot <tt/majordomo/. <sect2>Gevolgen van Majordomo een vertrouwde gebruiker maken<label id="sec-construst"> <p> Als <tt/majordomo/ een vertrouwde gebruiker is, dan zijn gebruikers die in de <tt/majordomo/ groep ook vertrouwd. Als <tt/majordomo/ lid is van de <tt/deamon/ groep, zijn leden van de <tt/majodomo/ groep niet vertrouwd. Het is een goed idee om <tt/majordomo/ een lid te maken van de <tt/daemon/ groep, en maak een aparte groep aan genaamd <tt/majordomo/ voor mensen die de Majordomo lijsten onderhouden om te vermeiden dat <tt/majordomo/ een vertrouwde gebruiker is. Ook, als je <tt/majordomo/ lid maakt van de <tt/deamon/ groep hoeft de wrapper niet wereld uitvoerbaar te zijn. (De wrapper kan worden uitgevoerd door de groep <tt/daemon/, en door Sendmail via de <tt/aliases/ file sinds deze files uitvoert als <tt/daemon/.) Deze toegevoegde security houdt gebruikers tegen om Majordomo te "voeden" door valse berichten door de wrapper aan Majordomo te geven. <sect2>Gevolgen van Onveilige Groep schrijf bare Directorie Paths <p> Als een gebruiker groep schijf rechten heeft op een directory, bijvoorbeeld <tt>/etc</tt>, kan een gebruiker simpel elke file verplaatsen en er een nieuwe terug zetten. Een aanval kan ongeveer gaan zoals dit <tscreen><code> [mallory@kes etc]$ mv aliases ... [mallory@kes etc]$ vi aliases </code></tscreen> De gebruiker kan nu zijn eigen aliases maken! Deze aanval, kan worden tegengehouden door Sendmail's security checking voor onveilige groep schrijf bare paths. Deze aanval zou ook kunnen werken met een include en .forward file dat een onveilig path heeft. <p> In het geval van Majordomo, heeft de gebruiker in de <tt/majordomo/ groep al toegang tot de include files, dus dit breekt de veiligheid niet. Hoewel, een administrator moet voorzichtig zijn en moet deze ongewenste onveilige groepen en hun schrijf bare directorie paths, in de toekomst, omdat Sendmail er <em/niet/ naar kijkt. <sect2>Inschrijvers Privacy beschermen <p> Helaas, zeer ervaren spammers kunnen een mailing list openen door het <bf/EXPN/ SMTP commando. Daarom zouden administrators dit moeten uitzetten als ze mailing lijsten hebben. Voeg de regel <tscreen><verb> O PrivacyOptions=noexpn </verb></tscreen> toe aan de <tt/sendmail.cf/ file of <tscreen><verb> define(`confPRIVACY_FLAGS',`noexpn') </verb></tscreen> toe aan de <tt/sendmail.mc/ file. <sect>Majordomo <p> Majordomo is, natuurlijk, het stukje code waar dit document om draait; het bestaat uit een aantal Perl scripts met als enig doel het onderhouden van mailing lists. <sect1>De installatie voorbereiden <p> Download de gegzipte bron distributie van de laatste versie van Majordomo van <tt>http://www.greatcircle.com/majordomo/</> en pak het uit <tscreen><code> [jarchie@kes jarchie]$ zcat majordomo-1.94.4.tar.Z | tar xvf - </code></tscreen> Dit maakt een subdirectory aan met alle files die nodig zijn om Majordomo te installeren; deze directory <em/kan niet/ dezelfde zijn als de directory waar Majordomo wordt geinstalleerd. <p> Majordomo moet draaien onder een bepaald UID en GID dus als je een van de scripts draait, draaien ze onder Majordomo's UID Dus, is het nodig om te beslissen onder welk UID of GID Majordomo gaat draaien. Ook moet Majordomo een Sendmail vertrouwde gebruiker zijn. (Zie <ref id="sec-construst" name="Gevolgen van Majordomo een vertrouwde gebruiker maken">) <p> Check de <tt>/etc/passwd</> en <tt>/etc/group</> files om een UID en GID te vinden dat nog niet is ingenomen. Bijvoorbeeld, een UID van 16 en een GID van 16 is gekozen. Je hebt de lokatie van de Majordomo script beslist; in deze HOWTO de directory <tt>/usr/local/majordomo-1.94.4/</>. Als je shadow passwords gebruik moet je deze regel toevoegen aan <tt>/etc/passwd</>. <tscreen><verb> majordomo:x:16:16:Majordomo List Manager:/usr/local/majordomo-1.9.4: </verb></tscreen> En zo'n soort regel aan je <tt>/etc/shadow</>. <tscreen><verb> majordomo:*:10883:0:88888:7::: </verb></tscreen> Gebruik de andere entries in deze files als een gids van wat je exact moet invullen. <em/Dit zijn alleen de waarden voor mijn systeem./ Als je geen shadow passwords gebruikt is alleen een entry in de <tt>/etc/passwd</> file nodig. <p> Om de Majordomo groep toe te voegen, voeg de volgende regel <tscreen><verb> majordomo:x:16:jarchie,majordomo </verb></tscreen> toe aan je <tt>/etc/group</> file. Dit geeft je toegang tot de Majordomo files die groep schrijf baar zijn. Ook, kun je <tt/majordomo/ aan de deamon groep toevoegen om het een vertrouwde gebruiker te maken (Zie <ref id="sec-sendtrust" name="Sendmail Vertrouwde gebruikers">) Om dit te doen verander de regel die er zo uitziet <tscreen><verb> daemon:x:2:root,bin,daemon </verb></tscreen> naar <tscreen><verb> daemon:x:2:root,bin,daemon,majordomo </verb></tscreen> <sect1>De installatie files aanpassen <p> De <tt/Makefile/ houdt alle informatie in die nodig is om Majordomo te installeren; het is meestal onnodig om regels aan te passen in <tt/Makefile/ die te maken hebben met systeem specifieke instellingen zodat Majordomo goed op je systeem installeert. De meest standaard instellingen zijn goed; Hoewel, de volgende instellingen, moeten worden veranderd. <tscreen><code> [jarchie@kes majordomo-1.94.4]$ vi Makefile </code></tscreen> De instellingen <tscreen><verb> PERL = /bin/perl CC = cc W_HOME = /usr/test/majordomo-$(VERSION) MAN = $(W_HOME)/man W_USER = 123 W_GROUP = 45 </verb></tscreen> moeten worden veranderd naar iets meer geschikt voor je systeem. Bijvoorbeeld, in mijn instellingen, zijn de waarden veranderd naar <tscreen><verb> PERL = /usr/bin/perl CC = gcc W_HOME = /usr/local/majordomo-1.94.4 MAN = /usr/man W_USER = 16 W_GROUP = 16 </verb></tscreen> Ook de <tt/majordomo.cf/ file moet worden aangemaakt. Een makkelijke manier om dit te doen is door de meegeleverde <tt/sample.cf/ te copieëren naar <tt/majordomo.cf/ en deze editten. <tscreen><code> [jarchie@kes majordomo-1.94.4]$ cp sample.cf majordomo.cf [jarchie@kes majordomo-1.94.4]$ vi majordomo.cf </code></tscreen> Weer, de meeste instellingen zijn standaard goed, maar de volgende regels moet worden veranderd voor je systeem van <tscreen><verb> $whereami = "example.com"; $whoami = "Majordomo\@$whereami"; $whoami_owner = "Majordomo-Owner\@$whereami"; $homedir = "/usr/test/majordomo"; $digest_work_dir = "/usr/local/mail/digest"; $sendmail_command = "/usr/lib/sendmail"; </verb></tscreen> naar iets als dit <tscreen><verb> $whereami = "kes.emeraldis.com"; $whoami = "majordomo\@$whereami"; $whoami_owner = "majordomo-owner\@$whereami"; $homedir = "/usr/local/majordomo-1.94.4"; $digest_work_dir = "/usr/local/majordomo-1.94.4/digest"; $sendmail_command = "/usr/sbin/sendmail"; </verb></tscreen> <tt/$whoami/ en <tt/$whoami_owner/ moeten niet worden veranderd om Majordomo te laten werken, ik heb ze veranderd omdat ik het niet leuk vindt om hoofdletters te typen. <tt/$digest_work_dir/ is een tijdelijke directory waar files moet worden geplaatst. Als je niet van plan ven verkorte lijsten te gebruiken, moet je je niet druk maken over deze optie. <tt/$whereami/, <tt/$homedir/, and <tt/$sendmail_command/ moet worden veranderd naar de werkelijke waarden van je systeem. Anders dan de <tt/Makefile/, deze opties kunnen altijd worden veranderd nadat Majordomo is geinstalleerd door <tt/majordomo.cf/ aan te passen in de directory waar Majordomo is geinstalleerd. (De configuratie file is simpel gecopieeerd tijdens het installeren.) <sect1>Majordomo Installeren <p> De volgende stap is de Majordomo wrapper compileren. De wrapper is het enige Majordomo component dat moet worden gecompileerd omdat de rest alleen een collectie van perl scripts zin en moeten daarom niet worden compileerd. <tscreen><verb> [jarchie@kes majordomo-1.94.4]$ make wrapper </verb></tscreen> Om de Majordomo files te installeren, voer je de volgende commando's uit <tscreen><verb> [jarchie@kes majordomo-1.94.4]# make install [jarchie@kes majordomo-1.94.4]# make install-wrapper </verb></tscreen> Het eerste commando kan worden gedaan als de Majordomo gebruiker, maar de twee moet gedaan worden als <tt/root/ zodat het installatie script de wrapper SUID kan maken. (Sinds, <tt/majordomo/ is gecreerd zonder login shell of paswoord en je wilt het eerste commando als majordomo doen moet je eerst inloggen en dan <tt/su majordomo/ als root doen om <tt/majordomo/ te worden.) <sect1>De Majordomo Aliases maken <p> Sendmial aliases moet worden aan gemaakt voor Majordomo zodat commando's gezonden naar Majordomo kunnen worden verwerkt door Majordomo en de majordomo eigenaar, zodat de mensen je kunnen E-mail met het standaard adres <tt/owner-majordomo/. Voeg de volgende regels toe aan je aliases file. (Zie <ref id="sec-aliases" name="Aliases">) <tscreen><verb> majordomo: "|/usr/local/majordomo-1.94.4/wrapper majordomo" owner-majordomo: jarchie majordomo-owner: jarchie </verb></tscreen> <sect1>De configuratie testen <p> Als een gewone gebruiker (<em/niet/ als <tt/majordomo/ <em/of/ als <tt/root/), doe je <tscreen><code> [jarchie@kes jarchie]$ /usr/local/majordomo-1.94.4/wrapper config-test </code></tscreen> Dit detecteert de meeste problemen in de Majordomo installatie. <sect1>Lijsten aanmaken <p> Om een lijst te maken, moet je een file maken met de naam van de lijst in de Majordomo lijst directory. Bijvoorbeeld, om een lijst te maken genoemd test, moet je een file test maken als gebruiker Majordomo <tscreen><code> [root@kes /]# su majordomo [majordomo@kes /]$ touch /usr/local/majordomo-1.94.4/lists/test </code></tscreen> en voeg de gerelateerd alias toe <tscreen><verb> test: :include:/usr/local/majordomo-1.94.4/lists/test owner-test: jarchie test-request: "|/usr/local/majordomo-1.94.4/wrapper request-answer test" test-approval: jarchie </verb></tscreen> <sect1>Verder testen van de configuratie <p> Nu testen we de operatie van de lijst door het <tt/lists/ commando aan <tt/majordomo/ te geven. <tscreen><code> [jarchie@kes jarchie]$ echo lists | mail majordomo </code></tscreen> Het zou maar een seconde voor <tt/majordomo/ moeten duren om antwoord te geven met een bericht dat alle lijsten weergeeft die nu ingesteld zijn. Daarna probeer je het <tt/help/ commando. <tscreen><code> [jarchie@kes jarchie]$ echo help | mail majordomo </code></tscreen> Majordomo zou moeten antwoorden met een lijst van alle commando's die Majordomo accepteert. Het zou een goed idee zijn als je dit bericht bewaard voor later. <p> Om te zien of de aliases goed werken, probeer je zelf intescrijven en weer uitte schrijven bij een lijst. <tscreen><code> [jarchie@kes jarchie]$ echo subscribe test | mail majordomo </code></tscreen> Je ontvangt een E-mail message met instructies hoe je je echt moet inschrijven en een brief dat je commando is gelukt. Nadat je je goedkeuring het opgestuurd, moet Majordomo twee brieven terug zenden-- een dat je inschrijf aanvraag is geaccepteerd en een welkoms brief. De eigenaar van de lijst krijgt ook een e-mail met daarin dat jij je hebt ingeschreven. <p> Om je inschrijving op te heffen, zendt een <tt/unsubscribe/ commando <tscreen><code> [jarchie@kes jarchie]$ echo unsubscribe test | mail majordomo </code></tscreen> Je krijgt een brief terug met daarin dat je commando succesvol was. <sect1>Beter Aliases maken <p> Voor sommige lijsten, is het misschien goed dat Majordomo ze eerst nakijkt voordat ze de echte lijst bereiken. Bijvoorbeeld, Majordomo heeft een optie om je berichten automatisch te filteren op inhoud (zoals taboo woorden), of Majordomo kan mensen pakken die commando's naar de lijsten proberen te zenden. Voor deze opties, is het nodig om een betere set van aliases te gebruiken zoals <tscreen><verb> test: "|/usr/local/majordomo-1.94.4/wrapper resend -l test test-list" test-list: :include:/usr/local/majordomo-1.94.4/lists/test owner-test: jarchie test-owner: jarchie test-request: "|/usr/local/majordomo-1.94.4/wrapper majordomo -l test" </verb></tscreen> De laatste invoer staat toe dat iemand simpel een bericht naar <tt/test-request@kes.emeraldis.com/ zend met de text <tt/subscribe/ dan een bericht zenden naar <tt/majordomo@kes.emeraldis.com/ met de text <tt/subscribe test/. <sect>MajorCool <p> MajorCool is een web gebaseerd interface voor Majordomo die gebruikers instaat stelt om zichzelf toe te voegen en te verwijderen van een lijst en om die van hun zijn te onderhouden. De installatie is zeer gemakkelijk; alles wat je moet doen is de file's unzippen, 1 regel in het <tt/Configure/ script veranderen en dit uitvoeren. <sect1>MajorCool Uitpakken <p> De laatste files kan je download-en van <tt>http://ncrinfo.ncr.com/pub/contrib/unix/MajorCool/majorcool.tar.gz</>. <tscreen><code> [jarchie@kes jarchie]$ mkdir majorcool [jarchie@kes jarchie]$ mv majorcool.tar.gz ./majorcool/ [jarchie@kes majorcool]$ zcat majorcool.tar.gz | tar xvf - </code></tscreen> <sect1>Het <tt/Configure/ script aanpassen <p> Open <tt/Configure/ <tscreen><code> [jarchie@kes majorcool]$ vi Configure </code></tscreen> en verander de regel <tscreen><verb> PERLBIN="/usr/local/bin/perl" # How to start a perl script </verb></tscreen> naar het goede perl path <tscreen><verb> PERLBIN="/usr/bin/perl" # How to start a perl script </verb></tscreen> anders zal, Majorcool niet goed installeren. <sect1>MajorCool Installeren <p> Als je het <tt/Configure/ script draait, als de standaard keuze voor een optie ok is, is simpel Enter drukken genoeg om de standaard waarde te accepteren. <tscreen><code> [root@kes majorcool]# ./Configure </code></tscreen> Het <tt/Configure/ script vraagt je om een paar keer Enter te drukken en dan vraagt het naar de locatie van Majordomo en enkele andere vragen over de setup van je web server. <tscreen><code> What is the installation directory of Majordomo? []: /usr/local/majordomo-1.94.4 Will place the MajorCool programs in /usr/local/majordomo-1.94.4. What is the path to your Majordomo configuration file? [/usr/local/majordomo-1.94.4/majordomo.cf]: Using configuration file name '/usr/local/majordomo-1.94.4/majordomo.cf' Where would you like temp files created when MajorCool runs? [/tmp]: MajorCool moet CGI programma's, support files, en icoontjes installeren in je Web server directories. What is the root directory for your Web server? []: /home/httpd Where is the cgi-bin directory for your Web server? [/home/httpd/cgi-bin]: Will place the programs in /home/httpd/cgi-bin. What is your server's URL for '/home/httpd/cgi-bin'? [/cgi-bin]: Where is the image directory for your Web server? [/home/httpd/icons]: Will place the icons in /home/httpd/icons. What is your server's URL for '/home/httpd/icons'? [/images]: /icons Where is the root directory for documents on your Web server? []: /home/httpd/html </code></tscreen> Het <tt/Configure/ script vraagt je andere vragen die niet echt belangrijk zijn. (De standaard instellingen zijn goed, maar je kan een paar instellingen veranderen om aan jouw wensen te voldoen. Anders dan de vragen van de web-server, de bedoel wordt duidelijk vanuit de context.) Als de configuratie file dat het script genereert van je vragen is weergegeven, moet je de nieuwe versie accepteer. <tscreen><code> Accept the new version? [yes|no|list|edit|diff]? y </code></tscreen> Het installatie script installeert de MajorCool files en draait het <tt/majordomo/ cgi script die de html file weergeeft op het console. Controleer om te zien of de installatie goed heeft gewerkt door het <tt/majordomo/ cgi script te bekijken op het web. <tscreen><code> [jarchie@kes jarchie]$ lynx http://localhost/cgi-bin/majordomo </code></tscreen> <sect>Lijst van Termen <p> <descrip> <tag/digest/ een collectie nieuwe berichten gemailed naar de leden van een lijst als een bericht. Een lijst wordt digested genoemd wanneer deze wordt opgeslagen, en periodiek wordt gezonden. <tag/GID/ (Group ID) een identificatie nummer toegekend aan files, directories en processen om rechten te beperken-- Het zelfde als UID behalve dat meerdere mensen lid kunnen zijn van een groep. Op Unix type systemen, kunnen groepen worden ingesteld (gedifineer in de <tt>/etc/group</> file). Als een gebruik naam een lid van een groep is, kan deze toegang krijgen tot files met dat GID (veronderstellend dat permissies dit toelaten). <tag/MTA/ (Mail Transfer Agent) een programma, zoals Sendmail, verantwoordelijk voor het sturen van mail van de ene naar de andere plaats. <tag/SGID/ (Set Group ID) een file attribuut dat een programma in staat stelt om te draaien met een specifieke groeps rechten, het maakt niet uit wie het programma uitvoert. <tag/smrsh/ (SendMail Restricted SHell) de shell die Sendmail gebruikt om programma's uit te voeren <bf/smrsh/ zet beperkingen op de programma's die kunnen worden gedraaid om het veiliger te maken dan een gewone shell zoals bash. <tag/SUID/ (Set User ID) een file atribuut dat toestaat een programma te draaien als een specifieke gebruiker, het maakt niet uit wie het programma uitvoert. <tag/UID/ (User ID) een identificatie nummer toegekend aan files, directories en processen--het zelfde als GID, maar iedere gebruiker heeft zijn eigen unieke UID. Elk proces moet draaien onder een UID ( De een-op-een relatie tussen UID en gebruikers naam is gedefinieerd in <tt>/etc/passwd</>). Het process' UID geeft aan wat het programma kan doen. Normaal ken een gewone gebruiker permissies op zijn/haar files veranderen, tenzij het UID 0 is (de <tt/root/ gebruiker). In dat geval kan hij elke file aanpassen op het systeem. <tag/wrapper/ Een programma gebruikt om een ander programma te starten; normaal is een wrapper SUID of SGID zodat het privileges kan geven aan een ander programma die het andere programma normaal niet zou hebben. </descrip> </article>