Gestion centralisée de différentes boites emails.
Le 25-06-2006 à 19:45 par Nicolas L.. Dans Configurations et Tutoriaux
Nombre de commentaires : 0
Cet article a pour but de présenter le système de gestion de mail que j’ai mis en place sur ma machine perso. La problématique est la suivante : je possède un nombre croissant d’adresses emails sur différents serveurs (laposte, serveur perso, emails de mes différents sites, …). N’étant pas tout le temps connecté sur mon poste où mon thunderbird gérait toutes ces boites, je voulais disposer d’un système permettant de consulter toutes ces boites mails dans un webmail unique ou avec mon client graphique préféré. Je voulais que ce système me permette d’avoir un dossier par boite email afin de ne pas avoir les mails des différentes boites mélangés.
Le système mis en place permet de :
- récupérer le contenu des différentes boites mails,
- rajouter des filtres afin de trier ses mails en fonction des différentes boites emails rapatriées,
- filtrer les spams,
- mettre à disposition les mails sur un serveur imap.
Les outils utilisés sont les suivants : exim, fetchmail, procmail, spamassassin et courier-imap.
Mise en place du système
Installer et configurer le MTA
J’ai utilisé exim4 qui est fournit par défaut avec ma debian. Le système de mail présenté est ouovert et exim est un choix personnel que j’ai fait, le tutoriel fonctionnerai très bien avec postfix. Il faut configurer exim4 correctement, chose qui se fait très facilement grâce au paquet exim4-config :
dpkg-reconfigure exim4-config
Voici les réponses importantes que j’ai fournies :
- Faut-il séparer la configuration dans plusieurs fichiers ? : oui
- Type de configuration : Distribution directe par SMTP (site Internet)
- Nom de courriel du système : mondomaine.tld
On a désormais un MTA capable de relayer le courier aux utilisateurs locaux. Il fait également office de serveur stmp pour envoyer les mails vers l’extérieur.
Récupérer le contenu des différentes boites mails
La deuxième étape est de rapatrier le contenu des différentes boites mails que l’on souhaite centraliser et de les renvoyer au MTA. J’ai pour celà utiliser fetchmail qui est fait pour cette mission.
Installation de fetchmail
aptitude install fetchmail
Dès l’installation du package, il vous demande : Faut-il installer un service fetchmail pour tout le système ?. Répondez Non.
Configuration de fetchmail
Ensuite, créer un fichier de configuration pour fetchmail :
touch ~/.fetchmailrc chmod 600 ~/.fetchmailrc
Le fichier doit posséder les permissions 600 sinon fetchmail refusera de s’exécuter. Voici le contenu de mon fichier .fetchmailrc afin de vous aider à la configuration :
# Configuration created Sat Mar 11 11:52:47 2000 by fetchmailconf # le postmaster c'est postmaster ;), # en fait dans /etc/aliases, il y a un alias : postmaster -> root set postmaster "postmaster" # pour que les erreurs de distributions aillent l'envoyeur : set bouncemail set properties "" #set logfile /var/log/fetchmail.log poll pop.laposte.net protocol pop3 username "lassalle.nicolas" password "thepass" poll pop.domaine.net protocol pop3 username "root@domaine.net" password "thepass"
Avant de rapatrier les messages, il faut indiquer à fetchmail de forwarder les mails à procmail sans passer par le MTA et sans modifier les entêtes du message reçu. Pour cela, créer le fichier ~/.forward et y placer le contenu suivant :
|/usr/bin/procmail
Pour rapatrier les mails depuis les serveurs distants, il n’y a plus qu’à lancer la commande :
fetchmail
Installer le serveur imap
Pour mes besoins j’ai choisit d’utiliser le serveur imap courier-imap. En effet, celui gère chaque dossier imap comme un dossier de type mdir. Et c’est exactement ce dont a besoin procmail pour trier les mails. Procmail permet de placer un mail suivant des filtres dans un dossier mdir, toute l’astuce du système mis en place repose sur cette fonctionnalité. Installation de courier-imap :
aptitude install courier-imap
Il n’y a ensuite rien à modifier, courier-imap est prêt à l’utilisation par les utilisateurs du système. J’ai cependant modifié un petit peu la configuration de l’emplacement de destination des mails afin qu’ils soient placés dans le dossier ~/mail . Pour cela, éditer le fichier /etc/courier/imapd . Modifier la constante MAILDIRPATH afin qu’elle ressemble à ceci :
MAILDIRPATH=mail
Création du dossier imap
Chaque utilisateur doit créer un dossier mdir dans ~/mail afin que courier-imap puisse y lire les messages. Cela ce fait grâce à la commande maildirmake.courier :
maildirmake.courier ~/mail maildirmake.courier ~/mail/.inbox
On va aussi créer des sous dossiers pour chacun de nos comptes :
maildirmake.courier ~/mail/.compteLaPoste maildirmake.courier ~/mail/.compteDomaine
J’ai également créé les dossiers imap suivants afin de gérer les spams :
maildirmake.courier ~/mail/.SPAM maildirmake.courier ~/mail/.notSpam maildirmake.courier ~/mail/.toSpam
Trier et filtrer les mails dans des dossiers imap
Il ne reste maintenant qu’à filtrer les spams et à trier les mails dans les dossiers imap. L’outil chargé de cette tache est procmail qui permet de placer des messages dans des dossiers différents en suivant des règles de filrages. L’outil pour supprimer les spams est spamassassin. Pour installer ces outils :
aptitude install procmail spamassassin
Pour configurer procmail il suffit maintenant de créer le fichier ~/.procmailrc . Vous pouvez vous inspirer de mon fichier .procmailrc :
# caractère verbeux de procmail ; mettre 'yes' permet d'avoir des messages
# supplémentaires
VERBOSE=yes
# pas obligatoire : procmail détermine votre nom de login tout seul, mais pour
# l'exemple on supposera que l'utilisateur s'appelle 'nicolas'
LOGNAME=nicolas
# mettre /bin/sh surtout si vous utilisez tcsh !
SHELL=/bin/sh
# chemin d'accès aux excutables ; en mettre le minimum, pour n'accéder qu'aux
# programmes indiqus dans le fichier de configuration
PATH=/bin:/usr/bin:/usr/local/bin:/home/nicolas/bin
# rpertoire o seront stocks les mails ; s'assurer que votre MUA sait y
# accder aussi
MAILDIR=/home/nicolas/mail
# si procmail n'arrive pas dlivrer le courrier, cette bote sera utilise
# en dernier ressort : il vaut mieux dfinir cette variable !
ORGMAIL=$MAILDIR/.emergency-inbox
# bote de rception par dfaut
DEFAULT=/var/mail/nicolas
# fichier de log de procmail ; si vous dfinissez cette variable,
# procmail gardera une trace de son excution dans le fichier
# indiqu. consulter priodiquement !
# Utilisation de SPAMASSASSIN, qui rajoute un header X-Spam-Status:
:0fw
| spamassassin -P
# Les mails considérés par spamassassin comme tant du spam vont dans
# la mailbox "spam"
:0
* ^X-Spam-Status: Yes
.SPAM/
# Les mails de lassalle.nicolas
* ^(To|Cc|Cci).*(lassalle.nicolas _at_ laposte.net)
.compteLaPoste/
# Les mails de domaine
* ^(To|Cc|Cci).*(root@domaine.net)
.compteDomaine/
# Tout ce qui n'a pas t tri jusqu'ici va dans la mailbox principale "inbox"
:0
.inbox/
NB: il faut bien faire attention au nom du dossier dans lequel on place les mails avec procmail, le nom du dossier doit impérativement commencer par un . et finir par un /
Finalisation
Vous avez remarquer que lors de la création des dossiers imap, j’ai créé 3 dossiers pour les spams :
- .SPAM/ : remplit automatiquement par spamassassin
- .toSpam/ : placez ici les mails non filtrés par spamassassin
- .notSpam/ : placer ici les mails filtrés par spamassassin alors que ce ne sont pas des spams
Ensuite j’ai créé des taches crontab afin d’éduquer spamassassin. Lancer la commande crontab -e et placez y les lignes suivantes :
0 11 * * * sa-learn --spam ~/mail/.toSpam/cur/ 0 11 * * * sa-learn --ham ~/mail/.notSpam/cur/
Ainsi tous les jours à 11 heures, je dis à spamassassin les choses suivantes :
- ce qui est dans .toSpam/ sont des spams que tu n’a pas filtré
- ce qui est dans .notSpam/ sont des mails que tu a filtré alors que ce ne sont pas des spams
Importer les mails à partir de fichiers mbox (Mozilla Thunderbird, et surement d’autres)
http://perfectmaildir.home-dn.net/