Automail pour 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 fr Iznogood

AboutTheAuthor:[A small biography about the author]

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.

Abstract:[Here you write a little summary]

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.

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

Automail pour fli4l

ArticleBody:[The main part of the article]

Petite description de l'environnement

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

Le problème

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.

L'idée

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.

La solution

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

Configurations du routeur

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.

Explications des commandes de wget

Réglages du serveur de courriels

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.

Réglages de mailstart.pl

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.

Test

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:-).

Téléchargements

Liens / Références