CONFIGURATION DU SERVEUR DE MAILS EXIM par G.Haberer, A.Peuch, P.Saade Table des matieres 1. Introduction........................................................................ 2 1.1. Objectifs.................................................................... 2 1.2. Documentation.............................................................. 2 2. Installation d'exim sur le poste serveur mail...................................... 2 3. Installation d'exim sur un poste client............................................ 3 4. Congurations complementaires.................................................... 3 5. Conguration et programmation des "clients" du serveur de mail.................. 4 5.1. Conguration.............................................................. 4 5.2. Automatisation............................................................ 7
1. Introduction 1.1. Objectifs. Le but de cette documentation est d'expliquer comment le serveur de mail exim a ete installe au Lycee La Martiniere Monplaisir, et dans quel but il l'a ete. L'usage d' exim qui est presente est loin de reveler toute la puissance de ce serveur de mails. Seules certaines de ces fonctionalites ont fait l'objet de notre etude. Cependant, ce document peut servir a plusieurs comme point de depart a une utilisation plus sophistiquee d'exim. Pour les besoins d'administration du reseau du lycee, nous desirions mettre en place un serveur central de mail capable de recevoir des dierents serveurs un rapport journalier de leur etat (par mail) et de les retransmettre aux personnes inscrites 1.2. Documentation. Une documentation tres complete sur exim se trouve dans le paquet Debian exim-doc (et eventuellement exim-doc-html) qu'il sut donc d'installer. Les chiers de documentation se trouvent alors dans /usr/share/doc/exim/ et le principal d'entre eux est spec.txt.gz. Exim permet de transferer des mails a l'interieur d'un reseau comme vers l'exterieur. Il faut congurer Exim pour permettre aux serveurs importants du reseau (ici vus comme des postes "clients") de renvoyer leur etat (log, utilisation des disques,...) a une (ou plus) adresse mail exterieure. Une identite ctive sur le serveur recevra les mails : maintenance, une redirection des mails vers l'exterieur sera alors faite. l'adresse email d'expediteur sera modiee pour que le message puisse passer par les serveur smtp des fournisseurs d'acces. 2. Installation d'exim sur le poste serveur mail (il faut seulement recongurer exim, celui-ci etant deja present sur les machines Debian) 1. # eximconfig appuyez sur 2. press return 3. You must choose one of the options below : 2 puis 4. What is the visible mail name of your system? tapez : mailing.martin (nom au choix) 5. Does this system have any other names which may appear on incoming mail messages, apart from the visible name above (nom machine.domaine) and localhost? 6. Are there any domains you want to relay mail for? 7. Are there any networks of local machines you want to relay mail for? 8. Witch machine will act as the smarthost and handle outgoing mail? tapez : smtp.wanadoo.fr (ou le smtp de votre fournisseur d'acces) 9. Which user account(s) should system administrator mail go to? tapez : admin 10. You already have an /etc/aliases le. Do you want to replace this with a new one? tapez : [Y] ou 2003-2004 http://rzomt.free.fr 2/7
11. Is this OK? 12. Configuration installed 3. Installation d'exim sur un poste client (il faut seulement recongurer exim, celui-ci etant deja present sur les machines Debian) 1. # eximconfig appuyez sur 2. You must choose one of the options below : tapez : 3 3. What is this system's name? tapez : nom machine.domaine (deja ecrit) 4. Where will your users read their mail? mailing.martin (voir le 1.4.) 5. Which machine will act as the smarthost and handle outgoing mail? adresse IP_serveur_mail 6. Which user account(s) should system administrator mail go to? tapez : admin 7. You already have an /etc/aliases le. do you want to replace this with a new one? tapez : [Y] ou 8. Is this OK? 9. Configuration installed 4. Congurations complementaires { Partie Serveur : Il faut editer le chier /etc/aliases pour pouvoir envoyer automatiquement les messages, sur une adresse locale du serveur et sur une adresse mail exterieure. # jed /etc/aliases il faut rajouter la ligne suivante juste apres les lignes commencant par un # maintenance: adressemail,adressemail (faire un retour a la ligne a la n) Il faut editer le chier permettant de changer l'adresse de l'expediteur (elle doit ^etre reelle) : # jed /etc/email-addresses on rajoute a la n du chier : admin: nouvelle_adressemail_expediteur Il est necessaire, pour nir, de corriger une erreur au niveau de la gestion des mails locaux : # cd /var/spool/ 2003-2004 http://rzomt.free.fr 3/7
# ln -s../mail./ # cd /var/spool/exim/db/ # chown mail * { Partie Client : Il faut editer le chier de conguration de exim pour pouvoir envoyer correctement les mails au serveur. # jed /etc/exim/exim.conf Il faut descendre jusqu'a la partie ROUTERS CONFIGURATION et editer la ligne : route_list = "* adresse IP_serveur_mail bydns_a" pour qu'elle soit comme celle-ci : route_list = "* adresse IP_serveur_mail byname" Il est necessaire, pour nir, de corriger une erreur au niveau des mails locaux : # cd /var/spool/ # ln -s../mail./ # cd /var/spool/exim/db/ # chown mail * 5. Conguration et programmation des "clients" du serveur de mail 5.1. Conguration. Il est necessaire d'ecrire un script qui rassemblera toutes les informations du poste que l'on souhaite surveiller. Ce chier sera de la sorte : #!/bin/bash ##envoi des logs des machines importantes ##vers le serveur de mail ##creation du fichier contenant les informations a envoyer FICHIER_CONTENU="/tmp/fichier_contenu_mail.txt" ##titre echo -e "Rapport de $HOSTNAME : \n" > $FICHIER_CONTENU echo -e "\n" >> $FICHIER_CONTENU ##Temps de fonctionnement de la machine echo -e "Uptime \n" >> $FICHIER_CONTENU uptime >> $FICHIER_CONTENU ##utilisation des disques echo -e "utilisation des disques: \n" >> $FICHIER_CONTENU df -h >> $FICHIER_CONTENU 2003-2004 http://rzomt.free.fr 4/7
##fichier de log general echo -e "log general: \n" >> $FICHIER_CONTENU tail /var/log/messages >> $FICHIER_CONTENU ##serveur mail local echo -e "exim local: \n" >> $FICHIER_CONTENU tail /var/log/exim/mainlog >> $FICHIER_CONTENU #### ### Decommentez selon le "poste client" #### ##Serveur apache (decommentez les 3 lignes) #echo -e "fichier d'erreur d'apache (error.log): \n" >> $FICHIER_CONTENU #tail /var/log/apache/error.log >> $FICHIER_CONTENU ##Serveur Samba (decommentez toutes les lignes) #echo -e "FICHIERS DE SAMBA: \n" >> $ FICHIER_CONTENU #echo -e "fichier log.smbd: \n" >> $FICHIER_CONTENU #tail /var/log/samba/log.smbd >>$ FICHIER_CONTENU #echo -e "fichier log.nmbd: \n" >> $FICHIER_CONTENU #tail /var/log/samba/log.nmbd >>$ FICHIER_CONTENU ##serveur de backup rsync 1/2/3 ##decommentez les 3 lignes suivantes #echo -e "FICHIERS DE SRVRSYNC: \n" >> $FICHIER_CONTENU #echo -e "log daily & weekly \n" >> $FICHIER_CONTENU ##ne decommenter que la ligne correspondant au bon server rsync plus la ligne "echo -e..." #tail /var/log/log_bkup/bkup_srvrsync1.log >> FICHIER_CONTENU #tail /var/log/log_bkup/bkup_srvrsync2.log >> FICHIER_CONTENU #tail /var/log/log_bkup/bkup_srvrsync3.log >> FICHIER_CONTENU ##serveur de backup de Bcdi3 ##tout decommenter #REP_BKUP_DAILY="/bkup/bkup_daily/bkup_bcdi/" #REP_BKUP_WEEKLY="/bkup/bkup_weekly/bkup_bcdi/" #DDJ=$( ls $REP_BKUP_DAILY tail -n 1 ) 2003-2004 http://rzomt.free.fr 5/7
#echo -e "Derniers dossiers de BKUP_WEEKLY: \n" >> $FICHIER_CONTENU #ls -l $REP_BKUP_WEEKLY >> $FICHIER_CONTENU #echo -e "Derniers dossiers de BKUP_DAILY: \n" >> $FICHIER_CONTENU #ls -l $REP_BKUP_DAILY tail -n 7 >> $FICHIER_CONTENU #echo -e "du -h du dernier dossier de BKUP_DAILY: \n" >> $FICHIER_CONTENU #du -h $REP_BKUP_DAILY$DDJ >> $FICHIER_CONTENU #echo -e "Fichiers de la derniere sauvegarde de BKUP_DAILY: \n" >> $FICHIER_CONTENU #ls -lr $REP_BKUP_DAILY$DDJ >> $FICHIER_CONTENU ############ ###fichier syslog echo -e "fichier syslog: \n" >> $FICHIER_CONTENU tail /var/log/syslog >> $FICHIER_CONTENU ##log daemons echo -e "log des daemons: \n" >> $FICHIER_CONTENU tail /var/log/daemon.log >> $FICHIER_CONTENU ##log auth echo -e "authentification sur la machine: \n" >> $FICHIER_CONTENU tail /var/log/auth.log >> $FICHIER_CONTENU ##top echo -e "top:" >> $FICHIER_CONTENU top -n 0 b >> $FICHIER_CONTENU ##Processus en cours echo -e "ps aux: \n" >> $FICHIER_CONTENU ps aux >> $FICHIER_CONTENU ##envoi des informations a l'utilisateur admin cat $FICHIER_CONTENU mail -s $( date +%j_[$hostname]_%y_%b_%d_h=%h:%m:%s ) maintenance ####fin Ce sript sera appele envoi log via exim.sh et devra ^etre executable : # chmod 740 envoi_log_via_exim.sh Il devra en plus ^etre place dans le dossier /root/envoi log/ Pour cela, on cree le dossier et on y copie le script : # mkdir /root/envoi_log # cp /chemin_du_script /envoi_via_exim.sh /root/envoi_log/ 2003-2004 http://rzomt.free.fr 6/7
5.2. Automatisation. Il faut que le sript se lance regulierement : une fois tout les soirs. On utilisera cron. On cree le chier envoi_log dans le dossier /etc/cron.d/ Ce chier contiendra : ##Fichier cron pour envoi automatique des logs ##envoi tout les soirs a 23h00 00 23 * * * root /root/envoi_log/envoi_log_via_exim.sh G.Haberer, A.Peuch, P.Saade 2003-2004 http://rzomt.free.fr 7/7