Page suivante Page précédente Table des matières

5. Automatisation

OK, tout ce que nous avons vu fonctionne... (sinon ne pensez même pas à l'automatisation, il faut d'abord que tout soit ok) maintenant il nous faut un script pour que l'administrateur ou le root ne se prenne pas la tête pour ajouter un utilisateur à votre fichier procmail... L'exemple suivant s'adresse à des utilisateurs plus expérimentés - parce que certaines choses ont besoin d'être changées. J'ai décidé d'utiliser la M(B) parce qu'elle est plus utilisée que la M(A) (moins chère). Mon exemple peut très bien être adapté à la M(A).

5.1 La structure.

Puisque le fichier de post-routine termine le programme (tout ce qui va suivre ne fonctionnera pas sans lui) nous avons besoin d'un fichier de pre-routine.

Le fichier de pre-routine ".procmailrc-header"

Ce fichier servira à la fois au fichier de pre-routine et au fichier principal puisqu'ici seront rajoutés ou supprimés les différents utilisateurs. C'est un fichier très important, une copie de sauvegarde sera la meilleure chose à faire avant l'ajout d'un utilisateur, il PEUT y avoir des problèmes ... une machine n'est pas infaillible.

(*** < file > *** text ***) .procmailrc-header

:0 c
        passtrough

:0 
* ^To:.*freaker@ibm.net
! freaker

:0
* ^Subject:.root
! root

:0
* ^Subject:.barbara
! barbara

:0
* ^Subject:.paul
! paul@his.personal.emailaddress

:0 c
* ^Subject:.john
! john@his.personal.emailaddress

:0 
* ^Subject:.john
! john

:0
* ^From:.*newsletter@ibm.net
! freaker

:0
* ^FROM_DAEMON
throwaway

Le fichier de post-routine ".procmailrc-footer"

Comme mentionné ci-dessus, ce fichier doit être la post-routine puisqu'il ne sera pas utilisé pour délivrer les données - ce fichier contient le code de "rejet" pour retourner le message à l'expéditeur s'il ne trouve pas de correspondant ! C'est vraiment la fin de la boucle !

(*** < file > *** text ***) .procmailrc-footer


:0
  |(/usr/bin/formail -r -k \
     -A"X-loop: mailservice@mydomain.dom "| \
       /usr/bin/gawk '{print }\
       /^/ && !HEADER \
         { system("/bin/cat nosuchuser"); \
         print"--" ;\
         HEADER=1 }' ) |\
         /usr/bin/sendmail -t


exit

5.2 Script d'ajout de boîte à lettre

Ce script ajoutera un utilisateur au fichier de pre-routine, et mettra à jour le ".procmailrc" d'après le ".procmailrc-header" pour clôturer le tout. Les commentaires (précédés de #) ne sont là que pour vous aider :) vous pouvez les supprimer.

(*** < file > *** code ***) addmail (* chmod 500 *)

#/bin/sh
#
# Copyright (c)1997 par Gunther Voet. rev 1.0.1
# SVP merci de laisser ce copyright si vous fournissez une machine avec ce 
# programme préinstallé ...


echo ""
echo "Addmail v1.0.1 by Gunther Voet, Freaker / TuC'97-98 (21/04/97)"
echo ""

if [ $1 ]; then

        if [ $2 ]; then

# Faites une sauvegarde!
        
        cp /home/mailserv/.procmailrc-header /home/mailserv/.procmailrc-backup
        
# Ajoutez l'information (>>) au fichier .procmailrc-header       

        echo ":0" >> /home/mailserv/.procmailrc-header
        echo "* ^Subject:.$1" >> /home/mailserv/.procmailrc-header
        echo "! $2" >> /home/mailserv/.procmailrc-header
        echo "" >> /home/mailserv/.procmailrc-header

# Mettez à jour le fichier .procmailrc à partir des fichiers .procmailrc-header
#  et .procmailrc-footer


        cat /home/mailserv/.procmailrc-header > /home/mailserv/.procmailrc
        cat /home/mailserv/.procmailrc-footer >> /home/mailserv/.procmailrc

# Soyez sûr que le fichier .procmailrc n'appartient qu'à l'administrateur 
# "mailserv" et que ce dernier a l'exclusivité de l'écriture/lecture...

        chown mailserv /home/mailserv/.procmailrc
        chgrp users /home/mailserv/.procmailrc
        chmod 600 /home/mailserv/.procmailrc
else
        echo "No DESTINATION mail address has been given ..."
fi

else
        echo "usage:"
        echo ""
        echo "syntax:  addmail from_user to_user(domain)"
        echo ""
        echo "example: addmail freaker freaker@myemail.dom"
        echo ""
fi

Ok, ce script va donc ajouter les informations de l'utilisateur ainsi que son adresse dans le fichier .procmailrc-header, et mettra à jour le fichier .procmailrc à partir des deux autres fichiers (header et footer). Si vous voulez supprimer un utilisateur, vous n'avez juste qu'à éditer le fichier ".procmailrc-header" pour le modifier, ainsi la prochaine fois que vous ajouterez quelqu'un, l'utilisateur précédent sera supprimé du fichier .procmailrc. Pour effectuer une suppresion immédiate, il vous faut le supprimer à la fois dans le fichier .procmailrc et .procmailrc-header.

Je vous crois assez compétent pour modifier le script pour que l'ajout d'un utilisateur à votre compte se fasse automatiquement et ce pour les deux méthodes.


Page suivante Page précédente Table des matières