Automail voor fli4l

ArticleCategory: [Choose a category, translators: do not translate this, see list below for available categories]

UNIXBasics

AuthorImage:[Here we need a little image from you]

Stefan 
Blechschmidt

TranslationInfo:[Author + translation history. mailto: or http://homepage]

Original in de Stefan Blechschmidt 

de to en Jürgen Pohl

en to nl Guus Snijders

AboutTheAuthor:[A small biography about the author]

Als een getrainde electricien, vond ik mezelf in 1990 voor een CAD werkstation om een schakel en controle station te ontwerpen. Ik ben toen geïnfecteerd geraakt met een toen onbekend 'virus', en dat is goed.

Abstract:[Here you write a little summary]

Wie gebruikt er niet die (enkele) diskette router van http://www.fli4l.de/ ? Waarschijnlijk zijn alle gebruikers ervan bekend met het probleem als de router wordt gebruikt in dial-on-demand mode in een bestaand netwerk systeem met een interne mail server. Als de router een verbinding maakt, zou de mailserver hiervan moeten weten, zodat deze mail kan ontvangen en versturen.
Dit artikel beschrijft een mogelijkheid om dit probleem op te lossen.

ArticleIllustration:[One image that will end up at the top of the article]

Automail with fli4l

ArticleBody:[The main part of the article]

Korte beschrijving van de Omgeving

Onze illustratie geeft het concept het netwerk weer dat we gaan gebruiken als voorbeeld voor dit artikel. WS1 tot WS3 representeren de werkstations die zijn aangesloten op het WWW via de router. De service-host is verantwoordelijk voor de interne en de externe mail. Het versturen van mail wordt afgehandeld door de MTA. Het ontvangen gaat met behulp van Fetchmail en vervolgens gesorteerd door procmail. De mailboxen op de service host worden aan de clients aangeboden via POP3 of IMAP

Het Probleem

Als een van de werkstations een verbinding naar het WWW opzet, merkt de service host hier normaal gesproken niks van. Het zou mogelijk zijn om de service host te vertellen op mail te ontvangen op specifieke tijden, met behulp van een cron job. Het zou eleganter zijn om de service host te informeren als een verbinding wordt opgezet, en zo deze in staat stellen zijn mail jobs af te handelen.

Daar de router draait vanaf een diskette, is er geen complex script of programma om de mail server vanaf de router te controleren.

Het Idee

Tijdens het informeren van de service host over de verbinding, zou het mogelijk moeten zijn om een aanvraag voor het verwerken van mail door te geven.

De Oplossing

Voor fli4l is een programma genaamd wget beschikbaar, met een grootte van ongeveer 100 kB, zodat deze makkelijk op de diskette past. met wget kunnen we een verbinding opzetten naar de service host, op hetzelfde moment als er uitgebeld wordt. Dit is mogelijk doordat inetd een poort opent op de service host en wacht op een verbinding vanaf de router. Met de verbinding zal er een script worden gestart voor het versturen en ontvangen van mail.

Het script is geschreven in Perl en is hier (mailstart.pl.gz) te downloaden.

Router Aanpassingen

Inbellen activeert het bestand .../opt/etc/ppp/ip-up. Dit is de juiste plaats om een verbinding op te zetten met onze service host. Door deze regel op te nemen:

wget -t 1 --spider MAILSERVER:PORT/xyz &> /dev/null

doen we precies dat.

Uitleg van de commando's van wget

Mail Server Aanpassing

Met behulp van de super server inetd wordt het programma mailstart [1] geactiveerd. Om dit te laten gebeuren, dienen we de volgende bestanden te bewerken:

/etc/inetd.conf

/etc/services

In dit bestand wijzen we de poort toe, welke wget zal benaderen. De regel:

mailstart  4000/tcp # Mailstart

regelt dit.

/etc/inetd.conf

In dit bestand definiëren we welk programma gestart zou moeten worden. inetd monitort het uitvoeren en logt dit in /var/log/syslog.

De regel:

mailstart  stream  tcp  nowait  root  /usr/sbin/tcpd  /root/bin/mailstart

rondt deze stap af. De eerste naam dient hetzelfde te zijn zoals genoteerd in het bestand /etc/services.

Aanpassing mailstart.pl

Met behulp van variabelen kan het programma worden aangepast aan de bepaalde situatie.

$protokoll

Met de variabele $protokoll definiëren we of de calls gelogd moeten worden. Als deze variabele op 1 wordt gezet, zullen de calls gelogd worden in /var/log/mailstart.log. Als de variabele op 0 wordt gezet, zal er geen log worden aangelegd.

Default: 1 create log

$protokoll_ziel

Met deze variabele kunnen we het doel van het log aangeven.

Default: /var/log/mailstart.log

$mailholen

Hier geven we de naam op van het programma dat de mail ophaalt. Om het programma te starten dient de gebruiker root te zijn, of de naam die was opgegeven in /etc/inetd.conf. Als iemand anders het programma wil gebruiken, dient het programma gestart te worden met su USER -c \"COMMANDO PARAMETER\" . Als het commando meerdere woorden lang is, moet het tussen aanhalingstekens worden geplaatst, ook moet het beschermd worden met \.

Default (one line):
 

su postmaster -c \"fetchmail -t 40 -a -L /var/log/fetchmail/fetchmail.log \
-f /home/postmaster/.fetchmailrc\"

$mailsenden

Dit is de plaats voor het programma dat gebruikt wordt voor het versturen van email. Om het programma te starten moet de user root zijn of de naam die was opgegeven in /etc/inetd.conf. Als iemand anders het programma wil gebruiken, dient deze gestart te worden met su USER -c \"COMMANDO PARAMETER\". Als het commando meerdere woorden lang is, moet het tussen aanhalingstekens worden geplaatst, ook moet het beschermd worden met \.

Default: sendmail -q

Overigens bestaat een deel van het programma uit een kleine POD documentatie, welke een korte beschrijving levert. Je kunt een beschrijving krijgen met perldoc mailstart.

Test

Alvorens te testen, dient de super server opnieuw gestart te worden, /etc/init.d/inetd restart zou dit moeten doen. Nu kun je testen met telnet localhost mailstart. Als de server reageerd zou je een vergelijkbare output als hieronder moeten krijgen.

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
HTTP/1.1 220 OK
Date: Sun, 20 Jul 2003 10:45:46 GMT
Server: mailstart/perl (sbsbavaria)
Last-Modified: Sun, 20 Jul 2003 10:45:46 GMT
Content-Type: text/txt
Content-Length: 11
1234567890
Connection closed by foreign host.

Dat is alles. Ik hoop dat je het verwachtte resultaat kreeg van mijn beschrijving. Als dat niet het geval is, hebben we een probleem.
- Jij, want het werkt niet.
- Ik, omdat ik niet in staat was een adequate beschrijving te geven :-).

Download

Links / Referenties