Mini HOWTO : redistribuer les mails extérieurs dans des boites internes.
Par Ghislain Picard.Nous avons souhaité proposer à chaque élève et à chaque professeur un e-mail personnel avec un accès interne, et un accès externe via notre provider où nous disposons d'une unique adresse e-mail.
Les correspondants extérieurs doivent préciser leur destinateur dans le sujet de l'e-mail :
To: fg@bln.de
Subject: Jojo : coucou, c'est moi.
Pour les utilisateurs internes, nous avons voulu rendre la tâche la plus transparente possible.
Les e-mails sortants sont mis en queue sur le serveur de mail et envoyés toutes les 15 minutes quand la liaison avec le provider est ouverte. Les e-mails internes sont distribués normalement.
Pour remplir cette tâche, nous avons utilisé un 486SX40 (disque de 240Mo) sous linux (RedHat 4.2) sans XWindow. La puissance et l'espace disque ne sont absolument pas critiques.
Ce serveur assure les tâches suivantes :
I. Configuration du serveur.
Un compte " post " gère la réception et la distribution des e-mails.
Le fichier de configuration de fetchmail est /home/post/.fetchmailrc :
poll provider.domain.de# adresse du POP du provider Les permissions de ce fichier doivent être 600 car le mot de passe est en clair ! (chmod 600 .fetchmailrc) Fetchmail est démarré par post au moment de la connexion et récupère
régulièrement les mails quand la connexion est ouverte. Procmail permet de filtrer les e-mails. Le fichier de commande de filtrage est /home/post/.procmailrc : Tous les e-mails non filtrés restent dans la boite aux lettres de " post ".
Il ne faut pas modifier directement le fichier /etc/sendmail.cf. Il est beaucoup plus facile et plus sûr d'utiliser les fichier .mc et le préprocesseur m4. Disponible sous RedHat dans /lib/sendmail-cf. La configuration se fait dans le fichier
/usr/lib/sendmail-cf/cf/config.cm avec des macros, puis est
" compilé " par m4 config.mc > config.cf. Copier
ensuite dans /etc/sendmail.cf le fichier config.cf ainsi engendré. notre fichier config.cf : Nous avons installé qpoper en rpm. Aucune configuration particulière n'est nécessaire. Ce démon démarre directement au démarrage. Il utilise le protocole POP3. Les élèves et les professeurs utilisent Pegasus (freeware) sur des
Pentium (sous MS-Windows95). Ce maileur est multiutilisateurs. Il est
parfaitement adapté à notre besoin.
La configuration est aisée. Il faut préciser le serveur SMPT (mitte@fg) et
le serveur POP (mitte@fg). Nous avons écrit deux scripts en
PERL afin d'ajouter et d'enlever les comptes (disponible sur le site
web du lycée en version alpha). L'ajout d'un compte consiste à :
proto pop3 # protocole
interface ppp0/0.0.0.0/0.0.0.0 # attend que la liaison PPP soit active
...
# ... (ppp0 est l'interface de la ligne PPP)
user fg # nom de user chez le provider
pass motdepasse # mot de passe en clair !
- d 900 # cherche le mail toutes les 15 minutes
:0#
* ^Subject:.*jojo :# recherche la chaîne Subject en début de
# ligne, puis la séquence jojo :
!jojo@fg# forward le mail sur le compte interne de jojo
include(`../m4/cf.m4')dnl
define(`confDEF_USER_ID',``8:12'')dnl
OSTYPE(`linux')dnl
undefine(`UUCP_RELAY')dnl
undefine(`BITNET_RELAY')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(local_procmail)dnl
FEATURE(nocanonify)dnl
MASQUERADE_AS(provider.domain.de)dnl# adresse e-mail chez le
provider ...
# ... (Modifie le from à la sortie du mail. Permet les reply).
MASQUERADE_DOMAIN(mitte.fg)dnl# adresse des machines internes pour
MASQUERADE_DOMAIN(prenzlauer.fg)dnl# que l'e-mail interne puisse etre
MASQUERADE_DOMAIN(tiergarten.fg)dnl# normalement distribué
FEATURE(masquerade_envelope)dnl
DEFINE('SMART_HOST','smtp:[provider.domain.de]')dnl # adresse du SMTP du provider
MAILER(procmail)dnl
MAILER(smtp)dnl