home   artikelen   forum   colofon  
Gepubliceerd op 12.10.2001
Auteur: Ronny Ziegler
Vertaald door: Guus Snijders
Languages: en de
Help Ons!
 

offline mailinglist

Mouse Normaal gesproken moet je een geregistreerde domeinnaam en een permamente verbinding met het Internet hebben om een mailinglist aan te bieden.
Wij laten je zien hoe je hetzelfde kunt bereiken met een inbel-verbinding en een dynamisch IP.

Waar is een mailinglist goed voor?

Een mailinglist ondersteund de communicatie tussen veel mensen die in hetzelfde onderwerp geïnteresseerd zijn.
De service werkt vergelijkbaar met een nieuwsgroep al heb je geen speciale news client nodig, je eigen mail client volstaat.
Een schets van het informatie netwerk ziet er als volgt uit:

Opzet van een 
   mailinglist

Als iemand in de lijst van van geregistreerde clients een bericht naar alle leden van de lijst wil sturen hoeft hij niet te weten wie dit allemaal zijn. Hij stuurt alleen het bericht naar de server (list@server.com) en de server verzend het naar iedereen die is ingeschreven op de lijst.
Hier kun je zien dat deze service verschilt van die je op webpagina's vindt. Daar kan alleen de beheerder van de websites een e-mail naar alle ingeschreven leden sturen (een zogenoemde annouce (aankondiging) list).

Echte mailinglists volgen het idee dat de inhoud van de e-mails gericht is aan een speciale client maar dat alle anderen de discussie kunnen volgen.

Wanneer en waarvoor heb je een mailinglist nodig?
Hier zou een grote collectie taken kunnen staan. Ontwikkelaars van Linux programma's gebruiken er vaak een omdat de programmeurs verspreid zitten over de hele wereld.
Maar je kunt ook een mailinglist voor privé taken maken, zoals bijvoorbeeld een lijst voor klasgenoten van school of een sportteam.
Data en discussies kunnen dan door iedereen worden gevolgd.

Probleem: offline

Op de malinglist server draaid meestal majordomo voor het automatisch beheren van de mailinglist(s).
Dit programma kan commando's uitvoeren die verstuurd zijn via e-mail, zoals in- en uitschrijvingen op een lijst.
Verder krijgt iedere mailinglijst zijn eigen e-mail adres dat wordt gebruikt voor de communicatie tussen de clients.
Als je geen permanente verbinding met het Internet hebt, heb je het probleem dat je, iedere keer als je inbelt, een dynamisch IP en een andere domeinnaam krijgt.
De mails van de clients bereiken de server niet omdat hij niet is ingebeld of omdat hij een andere domeinnaam heeft gekregen. Nu weet je waarom mailinglijsts meestal op permanent-verbonden servers worden geplaatst.

Met wat meer werk en enkele truuks kun je ook zonder een vaste verbinding met het Internet een mailinglijst aanbieden.

Principe van een offline mailinglijst

Ook zonder een permanente Internet verbinding heeft iedereen een e-mail adres of kan er een krijgen. Veel ISPs of andere bedrijven bieden een POP3 account op hun servers, waar je e-mail in wordt opgeslagen terwijl je offline bent.
Nadat je bent ingebeld, kan de mail automatisch worden opgehaald voor je lokale computer (of het hele lokale netwerk). Zie ook fetchmail I en fetchmail II.

Voor een offline mailinglijst heb je een POP3 server nodig waar je je opgeslagen e-mails kunt ophalen om deze door te sturen naar je lokale Majordomo.

In veel Linux distributies is majordomo reeds opgenomen, maar het kan op veel manieren geconfigureerd worden die nodig zijn voor normaal gebruik.
Zo kun bijvoorbeeld commando's voor de mailinglijst toevoegen aan het e-mail adres.
Maar dit werkt niet offline (wellicht met veel meer, maar onnodig werk).

In plaats daarvan gebruiken we het "kleine broertje" van majordomo, genaamd Minordomo. Deze is makkelijk te installeren en configureren en biedt voldoende functionaliteit voor de gebruikelijke taken.
De commando's voor de mailinglijst server moeten in de onderwerp regel worden geschreven, offline gebruik is dus mogelijk.

Installatie

De installatie gaat erg vlot.
Eerst haal je het programma (als tarbal) op van de homepage, http://www.nodomainname.net/software/minordomo/ en pak het uit naar /usr/local met

  >> tar zxvf minordomo-0.7.6.2.tar.gz -C /tmp/
  
Je hoeft het niet te compileren omdat het een perl script is. Je moet echter wel het eigenlijke programma minordomo.pl naar /usr/local/bin/ kopiëren:
  >> cp -a /usr/local/minordomo-0.7.6.2/minordomo.pl /usr/local/bin/
  
Het programma zoekt zijn configuratie in het bestand: /etc/minordomo.conf:
  >> cp /usr/local/minordomo-0.7.6.2/minordomo.conf.sample /etc/minordomo.conf
  
Het beheer van de mailinglijst vindt plaats in de directory /var/lib/minordomo:
  >> mkdir /var/lib/minordomo
  
Vervolgens maak je een subdirectory voor iedere lijst
  >> mkdir /var/lib/minordomo/lijstnaam
  


PROBLEEM:
Het programma sendmail moet lees en schrijfrechten hebben voor de directories en bestanden in /var/lib/minordomo.
Maar de user- en group IDs van sendmail verschillen per distributie.
De user.group is soms mail.mail, maar SuSE gebruikt daemon.daemon.
De eigenaar van de bestanden kun je veranderen met

  >> chown deamon.deamon FILENAME
  
Als je het user en groep ID van van sendmail niet weet, kun je ook alle gebruikers schrijf-toegang geven. Nadat sendmail de subdirectory archive heeft gemaakt, kun je de eigenaar zien via
  >> ls -l /var/lib/minordomo/lijstnaam/archive/
  total 1
  drwxr-xr-x   3 daemon   daemon       1024 Sep 12 17:16 2000
  
Verwijder de schrijftoegang voor alle gebruikers weer en geef de bestanden het user- en groep id van sendmail (hier is het deamon.deamon).


Vervolgens configureer je enkele bestanden.
Voorbeelden zijn te vinden in de directory /usr/local/minordomo-0.7.6.2/sample-list. De volgende bestanden kopieer je naar /var/lib/minordomo/lijstnaam/:

  • footer: Deze tekst komt aan het einde van iedere e-mail en bevat de informatie over hoe je je kunt uitschrijven van de de mailinglijst.

    File /var/lib/minordomo/lijstnaam/footer
      ---------------------------------------- 
      Listname -- http://www.homepage.de
      To unsubscribe, send mail to majordomo@pop3server.de with
      a subject of 'unsubscribe \l'  
      


    Minordomo vervangt de entry \l door de naam van de lijst. Het e-mail adres vervang je door het officiële POP3 server adres omdat Minordomo het zou vervangen door naam van de lokale mailserver.

  • info: In dit bestand plaats je een langere beschrijving van het thema van de mailinglijst.
  • one-liner: Een korte beschrijving van de mailinglijst. (slechts een regel)
  • template.html: Dit bestand is alleen nodig als je de website met dit bestand wilt gebruiken.
  • config: Je kunt een specifieke configuratie maken in de subdirectory van iedere mailinglijst.
    De instellingen herroepen de algemene configuratie in /etc/minordomo.conf. Zo kun je verschillende configuraties voor iedere mailinglijst gebruiken.
Het bestand /etc/minordomo.conf ziet eruit als:

File /etc/minordomo.conf
   # minordomo.conf - Configuratie bestand voor minordomo mailing list manager
  
   # De gebruikte SMTP server -- je bent offline, gebruik hier dus localhost
   SMTP_server=localhost
  
   # De domeinnaam
   domain=my.domainname.de
  
   # De directory waar de verschillende mailinglijsten worden opgeslagen
   directory=/var/lib/minordomo
  
   # Het e-mail adres van de beheerder van de mailinglijst. Omdat je offline
   # bent, moet je hier een officieel adres opgeven
   admin=my.name@yahoo.de
  
   # Alle lijsten die gearchiveerd moeten worden. Een leeg veld betekend 
   # geen gearchiveerde lijsten, een * betekend alle lijsten
   archive=*
  
   # Je kunt een lijst krijgen van alle ingeschreven leden van de lijst.
   # Schakel dit uit voor meer privacy
   list_cmd=
  
   # Hier geef je op in welke lijst gepost kan worden,
   # een * betekend alle lijsten
   open_lists=*
  
   # Gesloten lijsten waar alleen de beheerder naar kan schrijven
   closed_lists=
  
   # Maximale bericht lengte. Deze restrictie schakel je uit met een 0
   max_size=0
  
   # Moet minordomo de reply-to entry gebruiken?
   # Omdat je offline bent, stellen we dit in op "yes"
   set_re_to=yes
  
   # Ieder bericht krijgt deze prefix aan het begin van het onderwerp,
   # een handig patroon om deze mails in je mail programma terug te vinden.
   subject_prefix=[lijstnaam]
  
   # Homepage van de mailinglijst
   URL=http://www.homepage.com
   
   # De plaats van het template bestand voor het web frontend.
   # Leeg betekend de default
   template=
  


Vervolgens heb je twee e-mail adressen op een publieke POP3 server op het Internet nodig. Kies als adres bijvoorbeeld iets als majordomo@pop3server.de en lijstnaam@pop3server.de. Deze namen zijn niet erg belangrijk en kunnen vrij gekozen worden. Verder is het nodig dat beide adressen op dezelfde server staan.

Nu moet je de gebruikers minordomo en lijstnaam op je lokale machine toevoegen. De e-mail wordt dan via de POP3 server naar deze twee doorgestuurd.
Voeg hiervoor de volgende twee regels toe aan /etc/aliases:

File /etc/aliases
  minordomo:      "|/usr/local/bin/minordomo.pl"
  lijstnaam:     "|/usr/local/bin/minordomo.pl lijstnaam"
  


Om de nieuwe entries te activeren, type je

  >> newaliases
  
Om er zeker van te zijn dat de e-mails vanaf het Internet worden doorgestuurd naar het lokale adres, voeg je de volgende regels toe aan je /root/.fetchmailrc (voor een gedetailleerde configuratie, zie: fetchmail I en en fetchmail II).

/root/.fetchmailrc
  poll pop3server.de  protocol pop3 user LOGIN_NAME   pass PASSWORD  to listname
  poll pop3server.de  protocol pop3 user LOGIN_NAME   pass PASSWORD  to minordomo
  


Om het ophalen ook te automatiseren kun je entry maken in /etc/ppp/ip-up (als je die nog niet had):

/etc/ppp/ip-up
  fetchmail -q
  fetchmail -d 300
  


Afhankelijk van je sendmail configuratie wordt de mail vanaf het Internet direct naar je doorgestuurd of eerst gebufferd in /var/spool/mqueue/. Als het laatste het geval is op jouw machine, heb je nog de entry sendmail -q nodig aan het eind van /etc/ppp/ip-up (ook als je dezelfde entry aan het begin van het bestand hebt):

/etc/ppp/ip-up
  sleep 200
  sendmail -q
  


Nu wordt de mail die afkomstig is van de leden van de mailinglist niet alleen klaar gezet, maar ook verstuurd.
(Let op: SuSE heeft een bestand, waarin ip-up en ip-down beide in zijn opgenomen. Plaats de entries in het deel ip-up)

Vanaf dit punt kun je je inschrijven op de mailinglist. Hiervoor stuur je een mail naar majordomo@pop3server.de met als onderwerp subscribe lijstnaam. Als je het antwoord krijgt dat je bent toegevoegd aan de lijst, wordt ieder bericht dat je naar lijstnaam@pop3server.de stuurt naar alle leden van de lijst doorgestuurd.
Een lijst van alle ingeschreven leden kun je vinden in het bestand /var/lib/minordomo/linuxnetmag/list.

Tips & Hints

  • Als je de optie voor het maken van een archief hebt inggeschakeld, kun je het programma minweb.pl naar de cgi directory van je webserver kopiëren. Dan krijg je een comfortabel web front-end voor het bekijken van de verzonden mails.
  • Het web frontend werkt alleen op de server die de mails archiveerd en alleen de beheerder kan dit programma gebruiken. Als je het archief publiek wilt maken, kun je sitecopy gebruiken om het bestand naar een publieke server te kopiëren.
  • Offline mailinglists hebben een trage doorstroom van mails. Voor tijd-critische discussies zou dit dan ook een slechte oplossing zijn.
  • Met minordomo kun je natuurlijk meer dan een lijst beheren. Voor iedere additionele lijst maak je een nieuwe subdirectory in /var/lib/minordomo/, een extra e-mail adres en een nieuwe entry in /root/.fetchmailrc en een nieuwe entry in /etc/aliases.
  • De geboden oplossing werkt ook met een permanente Internet verbinding. Het voordeel zou zijn dat je een mailinglist onafhankelijk van je servernaam kunt aanbieden. Als je een nieuwe domeinnaam hebt, verstoord dit het mail-verkeer niet.
  • In principe kun je majordomo ook in een offline modus gebruiken. (Zelfs de commando's in het e-mail adres werken dan als je een publiek POP3 adres voor ieder mogelijk majordomo adres gebruikt.)

Links:
http://www.nodomainname.net/software/minordomo/ Homepage van Minordomo
http://www.greatcircle.com/majordomo/ Homepage van Majordomo
fetchmail I en fetchmail II). Artikel(en) over de configuratie van fetchmail