Original in de Stefan Blechschmidt
de to en J�rgen Pohl
en to fr Iznogood
Electricien confirm�, je me suis retrouv�, en 1990, devant une station de travail � faire le d�veloppement d'une station de contr�le et de commutation. J'ai, bien �videment �t� infect� par un � virus � inconnu mais c'�tait parfait.
Qui utilise ce routeur sur disquette de http://www.fli4l.de/ ? La plus part de ces
utilisateurs connaissent le probl�me du routeur utilis� en mode
dial-on-demand dans un r�seau avec un serveur de courriels interne.
Lorsque le routeur �tablit la connexion, le serveur de courriels doit le savoir
pour recevoir et envoyer du courriel.
Cet article d�crit une des possibilit�s pour r�soudre le probl�me.
Notre dessin montre le concept d'un r�seau que nous allons prendre pour exemple dans cet article. WS1 � WS3 repr�sentent les stations de travail connect�es au WWW par le biais du routeur. Le service-host est responsable pour le courriel interne et externe. L'envoi du courriel est trait� par un MTA. La r�ception se fait avec fetchmail et le traitement ult�rieur par procmail. Les bo�tes au lettres de l'h�te de service sont fournies par les stations de travail via POP3 ou IMAP
Si l'une des stations de travail �tablit une connexion sur le WWW, l'h�te de service ne le sait pas. Il serait possible de l'en informer avec l'aide d'une t�che cron pour envoyer et recevoir des courriels � des heures pr�d�termin�es. La mani�re plus �l�gante serait d'informer l'h�te de service que la connexion a �t� �tablie, lui permettant de traiter le courriel.
Comme le routeur est lanc� depuis une disquette, il n'y a pas de script complexe ou de programme pour contr�ler le serveur de courriels depuis le routeur.
Lorsque l'h�te de service est inform� sur l'ouverture d'une connexion, il devrait �tre possible de lancer une requ�te pour d�marrer le processus de r�ception et d'envoi de courriels.
Avec fli4l a �t� adjoint le programme wget, dont la taille est d'environ 100 ko. Il devrait rentrer tr�s facilement sur la disquette. Avec wget, nous pouvons �tablir une connexion avec le service h�te en m�me temps que la connexion. Cela sera possible par inetd, qui ouvrira un port sur l'h�te de service, attendant une connexion du routeur. Avec la connexion, un script d�marrera des processus suppl�mentaires pour envoyer et recevoir des courriels.
Le script est �crit en Perl. Vous pouvez le t�l�charger sur (mailstart.pl.gz).
La connexion active le fichier .../opt/etc/ppp/ip-up. C'est le bon endroit pour �tablir une connexion � notre h�te de service. En ajoutant la ligne :
wget -t 1 --spider MAILSERVER:PORT/xyz &> /dev/null
nous le r�alisons.
Avec l'aide du super serveur inetd, le programme mailstart [1] est activ�. Pour ce faire, nous devons �diter les fichiers
/etc/inetd.conf
/etc/services
Dans ce fichier, nous assignons le port auquel wget doit acc�der. La ligne :
mailstart 4000/tcp # Mailstart
le fait.
/etc/inetd.conf
Dans ce fichier, nous d�finissons quel programme doit �tre d�marr�. inetd contr�le son ex�cution et �crit les �v�nements dans /var/log/syslog.
La ligne :
mailstart stream tcp nowait root /usr/sbin/tcpd /root/bin/mailstart
termine cette �tape. Le premier nom doit �tre le m�me que celui not� dans le fichier /etc/services.
Le programme peut �tre ajust� avec les variables, � un serveur particulier.
$protokoll
Avec la variable $protokoll, nous pouvons d�finir si les appels doivent �tre �crits dans le journal. Mettre la variable � 1 �crira les appels dans /var/log/mailstart.log. Si la variable est positionn�e � 0 aucun journal ne sera cr��.
Default: 1 create log
$protokoll_ziel
Avec cette variable, nous pouvons d�terminer la cible du journal.
Default: /var/log/mailstart.log
$mailholen
Nous saisissons ici le nom du programme qui traite les courriels. L'utilisateur doit �tre root pour d�marrer ce programme ou le nom doit �tre entr� dans /etc/inetd.conf. Si quelqu'un d'autre veut utiliser le programme, la commande doit �tre d�marr�e avec su USER -c \"COMMAND PARAMETER\" . Si la commande fait plusieurs mots de long, elle doit �tre mise entre guillemets et dont �tre prot�g�e avec des \.
Default (one line): su postmaster -c \"fetchmail -t 40 -a -L /var/log/fetchmail/fetchmail.log -f /home/postmaster/.fetchmailrc\"
$mailsenden
Vous avez ici la place du programme utilis� pour envoyer les courriels. Pour d�marrer ce programme, l'utilisateur doit �tre root ou le nom doit �tre saisi dans /etc/inetd.conf . Si une autre personne veut utiliser le programme, la commande doit d�marrer avec su USER -c \"BEFEHL PARAMETER\". Si la commande fait plusieurs mots de long, elle doit �tre mise entre guillemets et prot�g�e avec \.
Default: sendmail -q
Au fait, une partie du programme est une petite documentation POD qui fournit une petite description. Vous pouvez obtenir la description avec perdoc mailstart.
Avant le test, le super serveur n�cessite d'�tre red�marr� ; /etc/init.d/inetd restart le fera. Vous pouvez maintenant tester avec telnet localhost mailstart la r�ponse du serveur. Vous devriez avoir un affichage identique � ceci :
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.
Voil�, c'est fait. J'esp�re que vous avez le r�sultat souhait� avec
ma description. Si ce n'est pas le cas, nous avons un probl�me.
- Vous, parce que cela ne fonctionne pas.
- Moi, parce que n'ai pas pu vous donner de bonnes informations:-).